Full GC

JVM学习总结(六)内存分配与回收策略

左心房为你撑大大i 提交于 2019-12-05 11:21:28
对象优先在新生代Eden区中分配 当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC,虚拟机提供了-XX:+PrintGCDetails这个收集器日志参数。 Minor GC 与 Full GC比较: 新生代GC (Minor GC)指 发生在新生代的垃圾回收,Java对象大多具备朝生熄灭的特性,所以Minor GC非常频繁,回收速度也很快。 老年代GC (Major GC/ Full GC)指发生在老年代的GC,出现了Major GC经常会伴随至少一次的Minor GC(非绝对,Parallel Scavenge收集器的收集策略里就有进行Major GC的策略选择过程)。Major GC的速度一般会比Minor GC慢10倍以上。 大对象直接进入老年代 大对象是指需要大量连续内存空间的Java对象,典型的大对象如很长的字符串对象以及数组,经常出现大对象容易导致内存还有不少空间时就提前触发垃圾收集以获取足够的连续空间来“安置”它们,虚拟机提供了一个-XX:PretenureSizeThreshold参数,令大于这个设置值的对象直接在老年代分配,目的是避免在Eden区和两个幸存区之间发生大量的内存复制 长期存活的对象将进入老年代 虚拟机采用了分代收集的思想来管理内存,能识别哪些对象应该放在新生代,哪些对象应该放在老年代中。 虚拟机给每个对象定义了一个对象年龄(Age