码迷,mamicode.com
首页 > 其他好文 > 详细

关于hotspot的gc

时间:2017-03-21 19:42:18      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:rem   max   收集   rom   生效   jvm   ble   pre   堆内存   

关键词

分代gc

java的堆内存主要分为young generation与old generation

其中young generation又分为一个eden space与两个survivor space(From与TO)。默认情况下,eden space占young generation的80%,两个survivor space各占10%。

新对象一般在eden space中分配,如果eden space满了,就进行一次young gc。eden space + From 中的所有存活对象会被复制到TO里去(这是因为大部分的新分配对象都会迅速死亡,每个survivor space虽然只占young generation的10%,但是一般情况下足够存放younggc中的存活元素)。每次young gc之后,From与TO交换。

每个Object的对象头里都有字段用于记录这个对象经历了多少次young gc。如果一个对象熬过了一定次数(可以通过-XX:MaxTenuringThreshold配置,默认为15次)的Young gc而不死,那么可以晋升到old generation。

如果新对象的体积过大(可以通过-XX:PretenureSizeThreshold配置,但是该设置只对Serial和ParNew收集器生效),那么它会被直接分配到old generation

 

remember set   --  card table

write barrier

stw

young gc

major gc

full gc

promotion guarantee check

 

 

参考资料

http://hllvm.group.iteye.com/group/topic/21468#post-272070

http://blog-archive.griddynamics.com/2011/06/understanding-gc-pauses-in-jvm-hotspots.html

 

关于hotspot的gc

标签:rem   max   收集   rom   生效   jvm   ble   pre   堆内存   

原文地址:http://www.cnblogs.com/stevenczp/p/6595995.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!