Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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 collertor为对象复制花费了这么多时间_Java_Garbage Collection_G1gc - Fatal编程技术网

Java 为什么G1 collertor为对象复制花费了这么多时间

Java 为什么G1 collertor为对象复制花费了这么多时间,java,garbage-collection,g1gc,Java,Garbage Collection,G1gc,我的java选项是: java -Dsun.zip.disableMemoryMapping=true -Xmx18g -Xms8g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=45 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc.log -XX:NewSize=1500m -XX:MaxNewSize=1500m 这是我的gc日志:

我的java选项是:

java -Dsun.zip.disableMemoryMapping=true -Xmx18g -Xms8g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=45 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc.log -XX:NewSize=1500m -XX:MaxNewSize=1500m
这是我的gc日志:

2016-12-22T09:45:51.567+0800: 145356.468: [GC pause (G1 Evacuation Pause) (young), 4.0553815 secs] [Parallel Time: 4052.5 ms, GC Workers: 28] [GC Worker Start (ms): Min: 145356469.0, Avg: 145356469.4, Max: 145356469.9, Diff: 0.9] [Ext Root Scanning (ms): Min: 0.6, Avg: 1.0, Max: 1.8, Diff: 1.2, Sum: 29.1] [Update RS (ms): Min: 12.0, Avg: 12.4, Max: 13.2, Diff: 1.2, Sum: 348.4] [Processed Buffers: Min: 9, Avg: 13.5, Max: 24, Diff: 15, Sum: 379] [Scan RS (ms): Min: 0.0, Avg: 0.1, Max: 0.2, Diff: 0.2, Sum: 2.3] [Code Root Scanning (ms): Min: 0.0, Avg: 0.0, Max: 0.1, Diff: 0.1, Sum: 1.1] [Object Copy (ms): Min: 28.7, Avg: 1927.0, Max: 4037.8, Diff: 4009.1, Sum: 53956.0] [Termination (ms): Min: 0.0, Avg: 2111.2, Max: 4009.0, Diff: 4009.0, Sum: 59114.4] [Termination Attempts: Min: 1, Avg: 2.2, Max: 5, Diff: 4, Sum: 63] [GC Worker Other (ms): Min: 0.0, Avg: 0.1, Max: 0.2, Diff: 0.1, Sum: 2.0] [GC Worker Total (ms): Min: 4051.4, Avg: 4051.9, Max: 4052.4, Diff: 1.0, Sum: 113453.2] [GC Worker End (ms): Min: 145360521.3, Avg: 145360521.3, Max: 145360521.4, Diff: 0.1] [Code Root Fixup: 0.1 ms] [Code Root Purge: 0.0 ms] [Clear CT: 0.4 ms] [Other: 2.4 ms] [Choose CSet: 0.0 ms] [Ref Proc: 0.4 ms] [Ref Enq: 0.0 ms] [Redirty Cards: 0.5 ms] [Humongous Register: 0.1 ms] [Humongous Reclaim: 0.0 ms] [Free CSet: 0.6 ms] [Eden: 1424.0M(1424.0M)->0.0B(1416.0M) Survivors: 76.0M->84.0M Heap: 3475.6M(8192.0M)->2071.7M(8192.0M)] [Times: user=54.84 sys=56.91, real=4.06 secs] 2016-12-22T09:45:51.567+0800:145356.468:[GC暂停(G1疏散暂停)(年轻),4.0553815秒] [并行时间:4052.5 ms,GC工作人员:28] [GC工作人员启动(毫秒):最小值:145356469.0,平均值:145356469.4,最大值:145356469.9,差异:0.9] [外部根扫描(毫秒):最小值:0.6,平均值:1.0,最大值:1.8,差异:1.2,总和:29.1] [更新RS(ms):最小值:12.0,平均值:12.4,最大值:13.2,差异:1.2,总和:348.4] [已处理缓冲区:最小值:9,平均值:13.5,最大值:24,差异:15,总和:379] [扫描RS(毫秒):最小值:0.0,平均值:0.1,最大值:0.2,差值:0.2,总和:2.3] [代码根扫描(ms):最小值:0.0,平均值:0.0,最大值:0.1,差异:0.1,总和:1.1] [对象副本(毫秒):最小值:28.7,平均值:1927.0,最大值:4037.8,差异:4009.1,总和:53956.0] [终端(毫秒):最小值:0.0,平均值:2111.2,最大值:4009.0,差异:4009.0,总和:59114.4] [终止尝试:最小值:1,平均值:2.2,最大值:5,差异:4,总和:63] [GC工作人员其他(ms):最小值:0.0,平均值:0.1,最大值:0.2,差异:0.1,总和:2.0] [GC工人总数(ms):最小值:4051.4,平均值:4051.9,最大值:4052.4,差异:1.0,总和:113453.2] [GC工作端(ms):最小值:145360521.3,平均值:145360521.3,最大值:145360521.4,差值:0.1] [代码根修复:0.1毫秒] [代码根清除:0.0毫秒] [清晰CT:0.4毫秒] [其他:2.4毫秒] [选择CSet:0.0毫秒] [参考程序:0.4毫秒] [参考Enq:0.0毫秒] [信用卡:0.5毫秒] [超大寄存器:0.1毫秒] [大量回收:0.0毫秒] [免费CSet:0.6毫秒] [伊甸园:1424.0M(1424.0M)->0.0B(1416.0M)幸存者:76.0M->84.0M堆:3475.6M(8192.0M)->2071.7M(8192.0M)] [次数:user=54.84 sys=56.91,real=4.06秒] 我的cpu有40个内核,有时gc会占用很多时间。我发现大部分时间都花在对象复制上,我想知道在哪种情况下,它会发生,我能做些什么来优化gc

[对象副本(毫秒):最小值:28.7,平均值:1927.0,最大值:4037.8,差异:4009.1,总和:53956.0]
max比min大得多,也许我可以减去gc工作者???

我使用-XX:LargePageSizeInBytes=32m并将服务移动到另一台linux服务器(我发现cpu运行队列有时很大)。然后发现gc的时间不超过1秒。

我使用-XX:LargePageSizeInBytes=32m并将服务移动到另一台linux服务器(我发现cpu运行队列有时很大)。然后发现的gc不超过1秒。

您可以使用
-XX:+G1PrintHeapRegions
来获得更多日志吗?也许你的疏散失败了。可能是重复的。对不起,我刚刚粘贴了我的日志。似乎对象复制花费了很多时间。昨天,我没有使用-XX:NewSize=1500m-XX:MaxNewSize=1500m,我发现一些gc花费了10秒。今天,情况好多了。但我也可以找到3或4秒gc。您可以使用
-XX:+G1PrintHeapRegions
来获得更多日志吗?也许你的疏散失败了。可能是重复的。对不起,我刚刚粘贴了我的日志。似乎对象复制花费了很多时间。昨天,我没有使用-XX:NewSize=1500m-XX:MaxNewSize=1500m,我发现一些gc花费了10秒。今天,情况好多了。但我也可以找到3或4秒gc.1。从运行多个服务的物理机迁移到一个虚盘独占 虚拟机 2.洛克曼gu360/vm相关系统配置 3.JAVA启动参数加了一个参数 -XX:LargePageSizeInBytes=32m1。从运行多个服务的物理机迁移到一个虚盘独占 虚拟机 2.洛克曼gu360/vm相关系统配置 3.JAVA启动参数加了一个参数 -XX:LargePageSizeInBytes=32m