java 对象分配与垃圾回收一览图
2012-02-21 10:45
344 查看
3、 Young年轻代。年轻代中存储新近分配的对象。年轻代分为3个区域:
a) Eden。
所有的新对象总是在Eden中分配,在Eden中的对象是连续分配的,所有的对象分配都在Eden的顶部进行,不需要搜索freelist。从而使得分配一个对象的开销与在栈中分配空间具有相同的时间开销。
b) Survivor
在上一次年轻代垃圾回收中存活下来的对象。这些对象每逃避一次垃圾回收,其年龄就增加1。
c) Spaces
完全为空的内存。其大小与survivor空间完全相同。
一次年轻代的垃圾回收过程如下:
1、当Eden不具备足够的空间来分配新的对象时,开始进行一次年青代的垃圾回收。
2、使用Copy算法,把Survivor及Eden中的对象复制到Space中。如果本次回收中存活的对象过多,从Space中溢出了,那么溢出的对象被复制到成熟堆中。
3、如果一个对象从一次垃圾回收中存活过来,那么,其年龄增加1,在垃圾回收中,年龄大的对象被优先的复制到成熟堆中。
4、垃圾回收完成后,Eden和Survivor中的存活对象全部被移走,剩余的对象全部是垃圾,可以被垃圾回收掉。原来的Space空间变成后Survivor空间,保存了存活下来的对象。
Hotspot的分代GC与SemiSpaceCopy算法不同,它仅保留了相对较小的Space空间,而无须把整个堆的1/2作为保留空间。由于大部分的成熟对象将及时地转移到成熟对象空间中,可以避免一次又一次的将其从一个半区复制到另外一个半区,从而提高复制的效率
http://www.blogjava.net/chhbjh/archive/2012/01/28/368936.html
相关文章推荐
- Java 内存分配、对象生命周期与垃圾回收
- Java基础复习笔记 对象状态、引用种类、垃圾回收形式02
- Java对象的生命周期与垃圾回收以及四种引用
- Java 内存分配及垃圾回收机制初探
- Java的初始化机制、垃圾回收机制和内存分配机制
- Java的初始化机制、垃圾回收机制和内存分配机制
- Java垃圾回收精粹——权衡点、对象生命周期以及全局暂停事件
- java垃圾回收之对象生存or死亡
- Java 对象与垃圾回收
- java方法中把对象置null,到底能不能加速垃圾回收
- Java 垃圾收集器与内存分配策略(一):对象“死亡判断”和四种引用
- 各种垃圾回收器、对象分配内存原则、GC参数
- java中的对象和垃圾回收
- Java 对象与垃圾回收
- java的对象与垃圾回收机制
- Java中的垃圾回收与对象生命周期
- 总结: 十分钟理解 Java 对象生存期与JVM垃圾回收机制
- Java——对象与垃圾回收
- java 图解JVM在内存中申请对象及垃圾回收流程
- Java内存分配及垃圾回收机制