Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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 g1 gc中的'Ref Enq'中实际执行了哪些操作_Java_Hbase_G1gc - Fatal编程技术网

Java g1 gc中的'Ref Enq'中实际执行了哪些操作

Java g1 gc中的'Ref Enq'中实际执行了哪些操作,java,hbase,g1gc,Java,Hbase,G1gc,我在我的在线hbase服务中发现一段gc日志,如下所示: 2018-11-08T19:12:35.907+0800: 4069334.381: [GC pause (G1 Evacuation Pause) (young) Desired survivor size 41943040 bytes, new threshold 1 (max 1) - age 1: 23290768 bytes, 23290768 total , 1.9809681 secs] [Parallel

我在我的在线hbase服务中发现一段gc日志,如下所示:

2018-11-08T19:12:35.907+0800: 4069334.381: [GC pause (G1 Evacuation Pause) (young)
Desired survivor size 41943040 bytes, new threshold 1 (max 1)
- age   1:   23290768 bytes,   23290768 total
, 1.9809681 secs]
   [Parallel Time: 22.6 ms, GC Workers: 13]
      [GC Worker Start (ms): Min: 4069334380.9, Avg: 4069334381.1, Max: 4069334381.2, Diff: 0.3]
      [Ext Root Scanning (ms): Min: 0.8, Avg: 1.0, Max: 1.1, Diff: 0.3, Sum: 12.8]
      [Update RS (ms): Min: 1.6, Avg: 1.8, Max: 2.0, Diff: 0.4, Sum: 23.4]
         [Processed Buffers: Min: 1, Avg: 4.4, Max: 9, Diff: 8, Sum: 57]
      [Scan RS (ms): Min: 2.2, Avg: 2.4, Max: 2.5, Diff: 0.3, Sum: 30.9]
      [Code Root Scanning (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [Object Copy (ms): Min: 6.7, Avg: 7.5, Max: 17.0, Diff: 10.4, Sum: 97.9]
      [Termination (ms): Min: 0.0, Avg: 9.5, Max: 10.3, Diff: 10.3, Sum: 123.1]
         [Termination Attempts: Min: 1, Avg: 2.5, Max: 5, Diff: 4, Sum: 33]
      [GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.3]
      [GC Worker Total (ms): Min: 22.1, Avg: 22.2, Max: 22.3, Diff: 0.3, Sum: 288.5]
      [GC Worker End (ms): Min: 4069334403.3, Avg: 4069334403.3, Max: 4069334403.3, Diff: 0.0]
   [Code Root Fixup: 0.0 ms]
   [Code Root Purge: 0.0 ms]
   [Clear CT: 0.4 ms]
   [Other: 1957.9 ms]
      [Choose CSet: 0.0 ms]
      [Ref Proc: 4.2 ms]
      [Ref Enq: 1951.7 ms]
      [Redirty Cards: 1.2 ms]
      [Humongous Register: 0.0 ms]
      [Humongous Reclaim: 0.0 ms]
      [Free CSet: 0.3 ms]
   [Eden: 592.0M(592.0M)->0.0B(592.0M) Survivors: 32.0M->32.0M Heap: 6521.8M(12.2G)->5943.3M(12.2G)]
 [Times: user=0.19 sys=0.11, real=1.98 secs]
正如您所看到的,大部分时间都花在
Ref-Enq
上。我可以做些什么来优化它。

回答标题:: 有关处理参考对象所用时间的信息显示在Ref Proc和Ref Enq阶段。在Ref Proc阶段,G1根据引用对象的特定类型的要求更新引用对象。在Ref Enq中,如果发现引用对象的引用对象已死亡,G1会将引用对象排入各自的引用队列

优化的答案是: 如果这些阶段花费太长时间,那么考虑使用选项-XX:+RealRefExcPrime

启用这些阶段的并行化。 欲了解更多信息-->


1
ParallelRefProcEnabled
已添加到java启动选项。2.你能举例说明Ref Enq中的
子句吗?如果发现引用对象的引用对象已死亡,G1将引用对象排入各自的引用队列。
,我无法理解你语句中的
引用对象@他们就是这么建议的。你考虑过硬件加速吗?