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虚拟机中堆内存的使用情况和配置信息。 前段时间某某高管在微博发文表示:“其实我觉得,中国人需要的不是一个自己的手机os,而是一个全国产的微信,再搭配一些辅助功能。”这算是“安卓开源”开源的代表了吧。然而打脸来的如此之快,10月30日消息,在Linux内核疑似大规... 全是国产垃圾APP惯出来的。那些对国产软件没意见的人,建议出国看看,花不了多少钱,出门开 Google Map,订宾馆用 Booking,翻译用 Google translate,聊天用 Telegram,社交活动用 Discord,你会惊... 会。我曾经是一名高三学生,亲身实践过。当时集中突破语文,每天都在刷语文卷。然后有一天想躺一下刷手机,结果短视频刷完了,我再去看哪些文章,只觉头晕眼花,难以理解文字。不过好在这种情况是短时间的,过了一天我的能力又恢复了。在我看来,长期刷短视频... 最主要原因是因为——贵!看看我家里搭建的这一套吧。目前我家中有5台常用的NAS,分别为群晖DS1522+、威联通TS-464C2、绿联DX4600 Pro 、极空间Z4S、威联通TS-AI642。个人认为,这其中的每台NAS都是时代的翘楚,... 截至2024年10月30日,关注者总数1137人,用时80天,增速约14人/天。2024年10月30日数据2024年8月10日开始创作,连续一周,1个关注者都没有。创作第7天,得到第一个关注,7天时间,写了8篇回答。当天得到关注,激动的心情... 我就有一台,跑了两年了,ipv6 ddns 网络,加虚拟化平台.跑了个 winserver 和 ubuntu 服务器。稳的雅皮!拆掉后盖,散热更好。烟盒固定硬盘。键盘防止灰尘掉落。电池拆掉,屏幕拆掉,也是散热考虑。屏幕拿去做便携副屏了。换...相关文章
如果我们没有自己的手机操作系统,会出现所谓的“卡脖子”“安全”问题吗?
手机的运行内存真的有必要上16GB吗?
大量刷短视频,会让大脑变笨拙吗?
NAS那么好,为什么还是没能成为大多数家庭必备的存储设备?
大家都是怎么把自己的粉丝增加到1000的呢?
自己拥有一台服务器可以做哪些很酷的事情?
发表评论
![]()