以下是我的JVM参数:
> /usr/local/java/bin/java -Xloggc:log/gc.log -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:PermSize=64m -XX:MaxPermSize=64m -Xss128K -server -Xmn1024m -Xms3027m -Xmx3027m -Dresin.home=/usr/local/resin我使用的是Resin,up是Resin start JVM参数,下面是我使用jstat -gcutil pid 1000时的GC输出
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 1.60 46.21 25.62 21.69 72639 941.082 31 0.275 941.357
1.51 0.00 51.91 25.63 21.69 72640 941.093 31 0.275 941.368
0.00 1.87 62.96 25.64 21.69 72641 941.104 31 0.275 941.379
1.51 0.00 86.39 25.65 21.69 72642 941.114 31 0.275 941.389
0.00 1.56 94.28 25.65 21.69 72643 941.126 31 0.275 941.401
0.00 1.45 5.03 25.67 21.69 72645 941.146 31 0.275 941.421
1.74 0.00 18.76 25.68 21.69 72646 941.158 31 0.275 941.433
0.00 1.85 37.51 25.69 21.69 72647 941.169 31 0.275 941.443
1.59 0.00 53.58 25.70 21.69 72648 941.180 31 0.275 941.455
0.00 1.74 74.02 25.71 21.69 72649 941.192 31 0.275 941.467我们可以找到小GC大约每秒一次,我觉得它非常频繁,因为我的新Edanz大小是1g.so为什么如此频繁或这是正常的事情?
发布于 2012-09-05 16:47:36
要么你的伊甸园大小不是1 GB,要么你创造了一个令人难以置信的垃圾。由于你似乎没有设置你的伊甸园大小,怀疑它比你想象的要小得多。
尝试使用jstat -gccause来查看大小。
我怀疑你一直在读http://www.caucho.com/resin-3.0/performance/jvm-tuning.xtp,它错误地说-Xmn设置了伊甸园空间。;)
-Xmx选项设置最大总堆大小(新的和旧的)
-Xmn选项设置年轻一代的大小,它由伊甸园空间和两个幸存者空间组成。由于你的幸存者空间似乎不是很满,我怀疑他们占了年轻一代1G的大部分。
http://www.oracle.com/technetwork/java/javase/tech/exactoptions-jsp-141536.html
尝试将-XX:SurvivorRatio=设置为类似于10的值,1 GB的大部分空间将是伊甸园空间。
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
https://stackoverflow.com/questions/12277594
复制相似问题