`
nihongye
  • 浏览: 101054 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

jdk5中的ConcMarkSweepGC简记

阅读更多
jdk5中的ConcMarkSweepGC:
这种回收策略的目标是提供短暂的停顿时间:
  它一共有两个暂停阶段,两个并发阶段(在多处理器环境下,使用一个回收线程与多个应用线程同时执行)
1.pause initial mark,在这个阶段,将停止所有应用线程,并在很短的时间内,标志出所有从根对象可直接到达的对象(如objects on thread stack, static objects and so on)
2.concurrent marking,在这个阶段,回收使用一个线程与应用线程并发执行,这个阶段可能会较长,但不会影响应用的执行。
3.pause remark,在这个阶段,将停止所有应用线程,重新标记已标记的live objects,这个阶段可能有稍长,取决于已标记对象字段所改变的数量
4.concurrent sweeping,在这个阶段,回收使用一个线程与应用线程并发执行,清理死对象,这个阶段可能会较长,但不会影响应用的执行

注意的问题:如果并发回收过程未能在内存被填满前完成,那么回收策略将自动被改变为吞吐量优先(高暂停)的策略,可以通过调整-XX:CMSInitiatingOccupancyFraction=nn,nn默认百分比为68%,来控制并发回收的出现时机。
控制好回收时间,关键有两点:1.控制pause remark的时间 2.避免由于老代被占满而改变为吞吐量优先
http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html

http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics