1.Full GC
会对整个堆进行整理包括新生代、老生代和永久区。Full GC整理整个堆,所以比较慢,应该尽可能减少Full GC的次数。
2.导致Full GC的原因
(1)老生代被写满
调优时尽量让对象在新生代多存活一段时间,在新生代GC时被回收,不要创建过大的对象和数组,避免直接在旧生代创建对象 。
(2)永久区空间不足
增大永久区空间,避免太多静态对象 。
(3)System.gc()被显示调用
垃圾回收不要手动触发,尽量依靠JVM自身的机制。
3.性能调优方法和步骤
(1)利用JVM工具,监控GC的状态。统计Full GC时长,频率,老生代内存大小及Full GC后内存释放量。
(2)生成堆的dump文件,分析dump文件,判断是否需要优化。
(3)调整GC类型和内存分配,不断分析和调整,找到最合适的参数。