前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试题35:工作中如何针对jvm进行调优?

面试题35:工作中如何针对jvm进行调优?

作者头像
爪哇缪斯
发布2023-05-09 21:40:36
1310
发布2023-05-09 21:40:36
举报
文章被收录于专栏:爪哇缪斯爪哇缪斯

【对于正常运行的系统】

  • 使用jmap来查看JVM中各个区域的使用情况。
  • 使用jstack来查看线程的运行情况,比如:哪些线程阻塞、是否出现了死锁。
  • 使用jstat命令来查看垃圾回收情况,特别是fullGC,如果fullGC比较频繁,那么就得进行调优了
    • 初步猜测频繁发生fullGC的原因。如果频发发生fullGC但是却一直没有出现内存溢出,那么表示fullGC实际上是回收了很多对象了,所以这些对象最好能在youngGC里就直接回收掉,避免这些对象进入老年代。对于这种情况,就要考虑这些存活时间不长的对象是不是比较大,导致年轻代放不下而直接进入了老年代。那么我们尝试加大年轻大的大小,如果改完后,fullGC减少了,则表明修改是有效果的。
  • 通过jConsoleVisualVM等工具来进行分析

【对于已经发生了OOM的系统】

  • 一般生产系统中都会设置当系统发生了OOM时,生成当时的dump文件 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/base
  • 我们可以通过jConsole、VisualVM等工具来进行分析
  • 根据dump文件找到异常的实例对象和异常的线程(占用CPU高),定位到具体的代码,然后再进行详细的分析和调试
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爪哇缪斯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档