Java 为什么小型GC如此频繁
这是我的JVM参数:Java 为什么小型GC如此频繁,java,garbage-collection,jvm,Java,Garbage Collection,Jvm,这是我的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
> /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 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。那么为什么如此频繁,或者这是正常的事情 要么您的Eden大小不是1GB,要么您正在创建令人难以置信的垃圾数量。因为你似乎没有设置你的伊甸园大小,所以怀疑它比你想象的要小得多 尝试使用
jstat-gccause
查看大小
我怀疑您阅读的内容错误地指出-Xmn
设置了伊甸园空间
-Xmx
选项设置最大总堆大小(年轻和旧)
-Xmn
选项设置由伊甸园空间和两个幸存者空间组成的年轻一代的大小。由于你的幸存者空间似乎不是很满,我怀疑他们占了年轻一代1克的大部分
尝试将-XX:SurvivorRatio=
设置为10左右,1GB中的大部分将是Eden空间
伊甸园空间:容量=859045888(819.25MB)使用=656363136(625.9566650390625MB)免费=202682752(193.2933349609375MB)76.4060622568279%从空间使用:容量=107347968(102.375MB)使用=1623640(1.54842376708938MB)免费=105724328(100.82657623291016MB)1.5125018481952075%用于空间:容量=107347968(102.375MB)已使用=0(0.0MB)免费=107347968(102.375MB)0.0%已使用在这种情况下,您似乎正在创建大量的垃圾我会尝试使用像VisualVM或YourKit这样的内存分析器。嗨,彼得,谢谢你的帮助,我粘贴了伊甸园的空间范围,减去从和到的区域,它仍然是600米,我认为即使是600米,也不应该如此频繁。有没有标准正常gc次数是多少?谢谢,您似乎每秒要创建600-800 MB的垃圾。在这种情况下,经常出现这样的小型地面军事系统是正常的。我想看看你是否可以将垃圾减少到每秒1-10 MB或更少。我正在运行一个程序,在100分钟的CPU和58 GB的数据处理后,我已经有一段时间没有用
-verbosegc
调试过了。它的伊甸园空间已经满了50%,幸存者和旧空间都是空的,因为它没有GCed一次。除非你努力,否则你不知道你能取得什么成就