Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么小型GC如此频繁_Java_Garbage Collection_Jvm - Fatal编程技术网

Java 为什么小型GC如此频繁

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

这是我的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 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一次。除非你努力,否则你不知道你能取得什么成就