首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

回答: HotSpot VM 内存堆的两个Survivor区

2012-12-25 
答复: HotSpot VM 内存堆的两个Survivor区把先前在论坛回复的一些帖打捞进来。这篇的原帖是:HotSpot VM 内

答复: HotSpot VM 内存堆的两个Survivor区
把先前在论坛回复的一些帖打捞进来。这篇的原帖是:HotSpot VM 内存堆的两个Survivor区
下面是回复内容,带补充。

=================================================================

curl 'http://hg.openjdk.java.net/jdk6/jdk6/hotspot/raw-file/tip/src/share/vm/runtime/globals.hpp' | grep -A 2 -E 'Use.*GC,'

  product(bool, UseSerialGC, false,                                         \          "Use the serial garbage collector")                               \                                                                            \  product(bool, UseG1GC, false,                                             \          "Use the Garbage-First garbage collector")                        \                                                                            \  product(bool, UseParallelGC, false,                                       \          "Use the Parallel Scavenge garbage collector")                    \                                                                            \  product(bool, UseParallelOldGC, false,                                    \          "Use the Parallel Old garbage collector")                         \                                                                            \--  product(bool, UseMaximumCompactionOnSystemGC, true,                       \          "In the Parallel Old garbage collector maximum compaction for "   \          "a system GC")                                                    \--  product(bool, UseConcMarkSweepGC, false,                                  \          "Use Concurrent Mark-Sweep GC in the old generation")             \                                                                            \--  develop(bool, UseAsyncConcMarkSweepGC, true,                              \          "Use Asynchronous Concurrent Mark-Sweep GC in the old generation")\                                                                            \--  product(bool, UseParNewGC, false,                                         \          "Use parallel threads in the new generation.")                    \                                                                            \--  product(bool, UseAdaptiveSizePolicyWithSystemGC, false,                   \          "Use statistics from System.GC for adaptive size policy")         \                                                                            \

这样grep出来的启动参数中,UseMaximumCompactionOnSystemGC和UseAdaptiveSizePolicyWithSystemGC不是选择GC算法类型的参数,另外几个都是。它们分别是
·UseSerialGC
·UseG1GC
·UseParallelGC
·UseParallelOldGC
·UseAsyncConcMarkSweepGC(产品模式不可调)
·UseConcMarkSweepGC
·UseParNewGC
它们之间的关系请参考:Jon Masamitsu: Our Collectors


Sun(=> Oracle)的产品版JDK 6里的HotSpot同上。

------------------

JRockit R28的话,GC算法的基本设定可以用下面几个参数:
-Xgc:singlecon
-Xgc:gencon
-Xgc:singlepar
-Xgc:genpar
不过更推荐并且也更简单的是设定优化的目标,例如这几个参数:
-XgcPrio:throughput
-XgcPrio:pausetime
-XgcPrio:deterministic

有老帖描述了当时的JRockit该如何选择GC实现。

------------------

IBM J9有诸如下面几种设定GC算法的VM参数:
-Xgcpolicy:optthruput
-Xgcpolicy:optavgpause
-Xgcpolicy:gencon
-Xgcpolicy:subpool

热点排行