开发者社区> 问答> 正文

[@talishboy][¥20]如何避免jvm垃圾回收的抖动问题

当系统运行一段时间,jvm需要垃圾回收的时候,发现整个系统会“卡住”一段时间,几乎不能处理任何的请求,然后发现系统所占用的内存急剧下降,应该是被jvm回收了,不知道是系统架构问题还是jvm的问题,但这种“抖动”的确影响太大了,如何解决这个问题呢?从业务架构方向考虑还是java代码写的不够好?
谢谢指点!

展开
收起
晓生寒 2018-12-13 22:42:54 2680 0
3 条回答
写回答
取消 提交回答
  • 在你说的垃圾回收抖动前后用jmap命令dump下内存对比下,看前后是哪些对象被回收了,看你描述“GC之后内存急剧下降”,感觉很可能是代码问题。

    2019-07-17 23:20:51
    赞同 展开评论 打赏
  • 普通用的年轻代的 parNew 和老年代的CMS都有STW,也就是停机时间,其中parNew是年轻代的stw时间很短,cms时间很长,在stw期间系统不能处理请求

    2019-07-17 23:20:51
    赞同 展开评论 打赏
  • JVM的GC抖动问题,属于JVM调优范畴,需要结合场景进行分析,因此现在无法说是业务架构问题还是代码问题。

    面对这类问题,你需要分析GC log,看下每次gc过程中,内存变化量和gc执行时间,然后在结合目前系统使用的gc算法,如CMS,G1等,进行细节分析,这时需要考虑用jmap, jhat, mat等工具进行分析。分析后才能确定是架构问题还是代码问题。

    EOF

    2019-07-17 23:20:51
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
JVM实战 立即下载
JVM的GC 立即下载
基于JVM的脚本语言开发、运用实践 立即下载