full gc太过频繁该如何处理
Posted messpro
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了full gc太过频繁该如何处理相关的知识,希望对你有一定的参考价值。
监控工具:jvisualVM、VisaulVM、jprofiler
JVM优化书籍:《Java性能优化权威指南》、《深入理解java虚拟机》
1.年轻代空间不足
2.per Gen(永久代)空间满
3.CMS GC时出现promotion failed和concurrent mode failure
4.统计得到的Minor GC晋升到旧生代的平均大小大于旧生代的剩余空间等
结论:
Full GC本身是好的,可以清除老年代的垃圾,但是如果Full GC发生的频率高了,就会影响性能,同时意味着系统内存分配机制出现问题。
因为Full GC本身执行时间较长(甚至超过1秒),而且除非采用G1 GC,否则其它的GC方式都会或多或少挂起所有线程执行(Stop-the-world),如果Full GC频繁发生,系统被挂起的次数就会增加,响应时间就会变慢。
同时,Full GC频繁发生,意味着你的内存分配机制存在问题,也许是内存泄露,有大量内存垃圾不断在老年代产生;也许是你的大对象(缓存)过多;也有可能是你的参数设置不好,minor GC清理不掉内存,导致每次minor GC都会触发Full GC;还有可能是你的老年代大小参数设置错误,老年代过小等等原因
以上是关于full gc太过频繁该如何处理的主要内容,如果未能解决你的问题,请参考以下文章
django MultiValueDictKeyError 错误,我该如何处理
Show proceslist时发现大量的sleep,有啥风险吗,该如何处理?
分布式进阶 八 Linux提示Unable to locate package该如何处理