这是我的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启动JVM参数,以下是我使用jstat -gcutil时的GC输出pid 1000 1000
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。那么为什么如此频繁或者这是正常的事情?
答案 0 :(得分:4)
要么你的伊甸园大小不是1 GB,要么你正在创造一个令人难以置信的垃圾。由于您似乎没有设置您的伊甸园大小,因此怀疑它比您想象的要小得多。
尝试使用jstat -gccause
来查看尺寸。
我怀疑你一直在阅读http://www.caucho.com/resin-3.0/performance/jvm-tuning.xtp错误地指出-Xmn
设置了伊甸园空间。 ;)
-Xmx
选项设置最大总堆大小(年轻和旧)
-Xmn
选项设定年轻一代的大小,包括伊甸园空间和两个幸存者空间。由于你的幸存者空间看起来不是很充实,我怀疑他们占据了年轻一代的大部分。
http://www.oracle.com/technetwork/java/javase/tech/exactoptions-jsp-141536.html
尝试将-XX:SurvivorRatio=
设置为10,大部分1 GB将是Eden空间。
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html