java - G1 full gc 时间很多时间

标签 java garbage-collection

我在第八个核心和 264G 内存的 Linux 机器上使用 hazelcast。接下来是我的启动脚本。

nohup java -Djava.rmi.server.hostname=172.19.141.2 -server -Xms40G -Xmx40G -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:./logs/gc.log -Xss256k -XX:PermSize=128M -XX:MaxPermSize=512M  -Djava.util.Arrays.useLegacyMergeSort=true -XX:+UseG1GC -XX:G1HeapRegionSize=32 -XX:MaxGCPauseMillis=600 -XX:InitiatingHeapOccupancyPercent=70 -XX:+HeapDumpOnOutOfMemoryError -Dhazelcast.jmx=true -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=2222 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.net.preferIPv4Stack=true -Djava.ext.dirs=../lib:../lib-business:../lib-other com.hazelcast.core.server.StartServer &

我的问题是完整的gc大约需要12秒,这是 Not Acceptable 。我尝试设置-XX:MaxGCPauseMillis=600参数。但它没有用。这是gc日志.

2017-04-28T21:38:17.795+0800: 9237.910: [Full GC (Allocation Failure)  27G->7361M(40G), 15.6893722 secs]
[Eden: 1024.0K(2010.0M)->0.0B(2048.0M) Survivors: 38.0M->0.0B Heap: 27.5G(40.0G)->7361.6M(40.0G)], [Metaspace: 17817K->17726K(18432K)]
[Times: user=23.49 sys=0.16, real=15.69 secs] 

希望得到您的帮助。

最佳答案

经过一番测试,我发现是大对象导致GC时间较长。当我删除大对象时,young gc不到500ms,并且没有full gc,所以长。

关于java - G1 full gc 时间很多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43682401/

相关文章:

java - 如何在java中处理通用列表List<MyClass>以特定方式获取结果集

java - 我如何知道curator InterProcessSemaphoreMutex丢失后是否被重新获取?

java - 优步 API : Specify multiple scopes while requesting or issuing a token returns Invalid Request Paramenters

Java = 下载缓冲区未填满?冲洗/缓冲如何工作?

java - List 中的对象会被垃圾回收吗?

java - RecyclerView 中的 MapView 内存泄漏

c - 当C库使用不透明结构指针时,如何解决cgo中的 "bad pointer in write barrier"panic

c# - 你如何防止 IDisposable 传播到你所有的类?

java - 使用 split() 在 Java 中查找特定行

java - Java 垃圾回收是否安全地清除了垃圾数据?