java 浅析 GC 、堆的分布

2017-06-08  本文已影响0人  杭州_mina

1. 堆的分布

1. java堆被划分成不同的区域:新生代 ( Young )、老年代 ( Old )
2. 新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 
3. 新生代占整个堆的1/3、Eden占新生代的1/8、from和to的大小一致各占新生代1/10、老年代占2/3 
4.from区和to去的大小空间是一样的,为什么呢?因为YGC 采用复制算法

2. GC的算法

1.它的缺点就是效率比较低(递归与全堆对象遍历),导致stop the world的时间比较长
2.这种方式清理出来的空闲内存是不连续的
1.如果在对象存活率较高时就要进行较多的复制操作,效率将会变低。
2.更关键的是,如果不想浪费50%的空间,就需要有额外的空间进行分配担保,以应对被使用的内存中所有对象都100%存活的极端情况,所以在老年代一般不能直接选中这种算法。
1.复制算法的最大的问题是:空间的浪费

3. GC的触发

image.png
上一篇 下一篇

猜你喜欢

热点阅读