JVM内存分代策略
堆内存一般分为几块:新生代,老年代和永久代。是垃圾回收最频繁的区域。
分代的意义?
给堆内存分代为了提高对象分配内存和垃圾回收的效率。
如果堆内存没有划分区域,所有新创建的对象需要和生命周期很长的对象放在一起,(内存地址是连续的)。
随着程序的运行,堆内存需要频繁的进行垃圾收集,每次回收都需要遍历所有的对象,遍历花费的时间代价过大,
严重影响GC效率。
- 新生代: 新创建的对象 频繁GC
- 老年代: 经过多次回收仍存活下来的对象 (GC频率低)
- 永久代: 静态属性、类信息等 (一般不回收)
根据不同的区域(代),采用不同的垃圾回收算法。分代收集大大提升了收集效率。
永久代是HotSpot中的概念。
young old permanent
|
Eden From To
伊甸园 | |
Survivor Spaces(幸存空间)
`