1. 关于方法区即永久代的回收,永久代的回收有两种:常量池中的常量,无用的类信息,常量的回收很简单,没有引用了就可以被回收。对于无用的类进行回收,必须保证以下几点:
1.1 类的所有实例都已经被回收。
1.2 加载类的ClassLoader已经被回收。
1.3 类对象的Class对象没有被引用(即没有通过反射引用该类的地方)。
1.4 永久代的回收并不是必须的,可以通过参数来设置是否对类进行回收。
2、Minor GC ,Full GC 触发条件
Minor GC触发条件:当Eden区满时,触发Minor GC。
3. Full GC触发条件:
3.1 调用System.gc时,系统建议执行Full GC,但是不必然执行
3.2 老年代空间不足
3.3 方法区空间不足
3.4 通过Minor GC后进入老年代的平均大小大于老年代的可用内存
3.5 由Eden区、From Space区向To Space区复制时,对象大小大于To Space可用内存,则把该对象转存到老年代,且老年代的可用内存小于该对象大小。