小编Joh*_*esR的帖子

为什么Java G1 gc花费这么多时间扫描RS?

我目前正在评估G1垃圾收集器以及它如何为我们的应用程序执行.看一下gc-log,我注意到很多集合都有很长的"扫描RS"阶段:

7968.869: [GC pause (mixed), 10.27831700 secs]
   [Parallel Time: 10080.8 ms]
   (...)
      [Scan RS (ms):  4030.4  4034.1  4032.0  4032.0
       Avg: 4032.1, Min: 4030.4, Max: 4034.1, Diff:   3.7]
      [Object Copy (ms):  6038.5  6033.3  6036.7  6037.1
       Avg: 6036.4, Min: 6033.3, Max: 6038.5, Diff:   5.2]
   (...)
    [Eden: 19680M(19680M)->0B(20512M) Survivors: 2688M->2624M Heap:
     75331M(111904M)->51633M(115744M)]
 [Times: user=40.49 sys=0.02, real=10.28 secs] 
Run Code Online (Sandbox Code Playgroud)

所有删除的日志行条目都以单位数ms显示运行时.

我想大部分时间都应该花在复制上,对吧?Scan RS需要这么长时间的原因是什么?关于如何调整G1设置的任何想法?JVM开始于

-Xms40960M -Xmx128G -XX:+UseG1GC -verbose:gc -XX:+PrintGCDetails -Xloggc:gc.log
Run Code Online (Sandbox Code Playgroud)

编辑:哦,我忘了......我正在使用Java 7u25

更新: 我注意到另外两个奇怪的事情:

16187.740: [GC concurrent-mark-start]
16203.934: [GC pause (young), 2.89871800 secs]
(...)
16218.455: [GC pause …
Run Code Online (Sandbox Code Playgroud)

garbage-collection jvm-hotspot g1gc

6
推荐指数
1
解决办法
3980
查看次数

标签 统计

g1gc ×1

garbage-collection ×1

jvm-hotspot ×1