jvm调优有什么技巧?
场景一、CPU过高
CPU占用过高排查思路:(查进程->查线程列表->查线程堆栈)
<>step1:通过top命令查询占用CPU情况>
p.s.shift+p(大写的P-cpu排序)shift+m(大写的M-内存排序)
<>step2:通过进程pid,查询对应的线程列表>
CPU占用过高排查思路:(查进程->查线程列表->查线程堆栈)
<>step1:通过top命令查询占用CPU情况>
p.s.shift+p(大写的P-cpu排序)shift+m(大写的M-内存排序)
<>step2:通过进程pid,查询对应的线程列表>
<>step3:线程id转为十六进制>
从step2中可以看到占用cpu较高的线程id,打印出十六进制
<>step4:通过jstack查出线程栈信息>
cpu过高主要是线程方面的问题,我们知道jvm中每个线程都分配了单的栈,我们可以通过jstack查看线程栈情况。
p.s.这里的pid为进程id,也就是第一步top中的pid
对照着step3中占用cpu最高的线程十六进制值可以定位到线程的栈信息。
上图可以看到具体定位到了ja的代码,就可以具体分析一下这个ja代码为什么会创建大量的线程占用大量的cpu。
除了ja程序线程问题,cpu过高也可能是线程死锁造成的,我们通过jstack也可以查看线程死锁的情况。
<>step5:通过jstack查看情况死锁情况>
-l:除了线程列表外,还显示关于锁的附加信息
通过栈中的信息可以定位到代码中死锁的代码。
<>step6:通过jstat查看gc情况>
除了以上的各种情况,还有一种就是ja频繁的gc也会造成cpu占用过高
1000ms为刷新数据的间隔时间
如果有频繁的gc就可以分析堆数据中哪些对象创建的较多,就可以具体分析了。
排查思路:(查进程->jvm内存占用)
<>step1:通过top命令查询占用CPU情况>
p.s.shift+p(大写的P-cpu排序)shift+m(大写的M-内存排序)
<>step2:通过进程pid查看gc情况>
以下是该命令的输出结果说明:
以上各个区域的使用情况都会以百分的形式进行显示,即0.0%~100.0%之间。
例如,如果输出结果为“40.0020.0060.0070.00100.00”,则表示:
<>step3:通过jmap查看堆情况>
通过step2已经发现jvm中的数据过多,频繁的ygc并且大量的数据都在老年代没有回收,这样就会表现出内存占用过高。下一步就是分析那些对象占用了内存。
jmap-histo命令可以用于输出Ja堆内存中各个对象类型及其数量的计信息。具体说明如下: 可以看到org.example.User创建的较多。这相就可以具体分析一下代码中哪些地方创建了User为什么没被回收。 与jmap-histo类似的命令: jmap-dump命令可以用于生成Ja进程的内存快照文件(.hprof格式),以便进行后续的分析和调试。具体说明如下: 导出的快照文件可以通过jvisualvm或mat来查看: mat还较智能,直接把存在问题的给你列出来 <>step4:jmap-heapjvm内存实际占用情况> 除了以上内存占用情况,在ja项目中还存在一种情况。如我ja项目没有配置jvm参数都使用默认的配置,我64G内存。会发现用一段时间后ja进程占用了8G内存。这时你可以使用命令看看ja实际使用的内存情况,然后再调整jvm参数。 jmap-heap是一个用于获取Ja堆内存信息的命令行工具,它可以输出Ja虚拟机中堆内存的使用情况和配置信息。 这六个网站,一旦用过,基本上是离不开了。都是我超爱的一些网站,基本上每天都用。1 地图生成器第一个,我要给大家推荐的是地图生成器。可以下载到各省,各市,各县的svg格式的地图素材。这些素材导入PPT中都是可以编辑的。可以单独更改颜色和轮廓。... 上家公司一直搞react,最近第一次写个vue3项目。老板朋友来了看了下页面说:这用vue写的吧。我:是...老板朋友:一看就知道是vue做的。这tm你看一眼页面就知道用的啥框架?这感觉就是,我一直用苹果,偶尔用了下华为打电话,有个人离老远... 8号入手magic7,跟mate40pro比。优点:1、电池真耐用,充电块,华为电池也是新换的但是明显荣耀耐用;2、系统明显快多了,mate40pro下半年开始卡的不行,实在受不了了。3、声音、震动效果提升明显,指纹反应灵敏很多。 缺点:1... 虽然很多答主用了诸如“典范级”、“心旷神怡” 的形容, 赞美这段代码, 但这里, 出于技术讨论的动机, 我说说不同看法.栈, 如果善于利用栈来处理树结构, 那么可以写出更简洁的代码, 根本不需要 recuresiveFn 这种方法. 泛型,... 题主一直比较关心神经网络在其他科学领域的应用,比如数学、物理学还有生物学,比如AlphaFold。本次带来的这篇文章傅里叶神经网络算子解偏微分方程就是一个很有意思的方向,其实我自己去年在给美国一个客户做兼职预测数字货币期权价格的时候就用到过... 2024.9. 24,有朋友咨询功耗,我没有单独给服务器弄智能插座,系统做的 esxi 也看不到,所以只能用其他角度判断供大家参考。我有一个餐边柜改的机柜,里面白裙两盘,黑群晖 4 机械 1 mvme,一个爱快硬路由,一个联通光猫,一个 2...相关文章
有哪些网站,一旦知道,你就离不开了?
都是前端框架,为什么用 React 的人会有优越感?
荣耀magic 7 首发的应该都收到货了,感觉怎么样?
无意中发现技术主管写的代码,大家帮忙看看什么水平?
为什么神经网络可以解偏微分方程,是什么原理?
程序员都有自己的服务器吗?
发表评论
![]()