返回信息流请问:java虚拟机的garbage collector在什么情况下会进行内存回收,
比如在j2se1.5,默认的gc策略下。
这个“默认8M的Young”在实际开发中是个什么概念?
看过这篇文章:JDK5.0垃圾收集优化之--Don't Pause
http://blog.csdn.net/calvinxiu/archive/2007/05/18/1614473.aspx
其中说:
年轻代、年老代、持久代,每个代满了之后都会促发collection,(另外Concurrent Low Pause Collector默认在老人区68%的时候促发)。GC用较高的频率对young进行扫描和回收,这种叫做minor collection。而因为成本关系对Old的检查回收频率要低很多,同时对Young和Old的收集称为major collection。
System.gc()会引发major collection,使用-XX:+DisableExplicitGC禁止它,或设为CMS并发-XX:+ExplicitGCInvokesConcurrent。
关于年轻代:
因此Young的大小设置挺重要的,大点就不用频繁GC,而且增大GC的间隔后,可以让多点对象自己死掉而不用复制了。但Young增大时,GC造成的停顿时间攀升得非常恐怖,比如在我的机器上,默认8M的Young,只需要几毫秒的时间,64M就升到90毫秒,而升到256M时,就要到300毫秒了,峰值还会攀到恐怖的800ms。谁叫复制算法,要等Young满了才开始收集,开始收集就要停止所有线程呢。
这是一条镜像帖。来源:北邮人论坛 / java / #9809同步于 2009/5/8
Java机器人发帖
[求助] 请问JVM的GC的自动触发条件
sunmoonstar
2009/5/8镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。