目的是减少GC的频率和Full GC的次数,过多的GC和Full GC是会占用很多的系统资源(主要是CPU),影响系统的吞吐量
导致Full GC
1. 旧生代空间不足
调优时尽量让对象在新生代GC时被回收、让对象在新生代多存活一段时间和不要创建过大的对象及数组避免直接在旧生代创建对象
2. Pemanet Generation空间不足
增大Perm Gen空间,避免太多静态对象
统计得到的GC后晋升到旧生代的平均大小大于旧生代剩余空间
控制好新生代和旧生代的比例
3. System.gc()被显示调用
垃圾回收不要手动触发,尽量依靠JVM自身的机制
如何调优:
1.堆信息的查看
2.线程监控
3.热点分析
4.内存泄漏检查
网友评论