Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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/2/shell/5.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 G1GC带初始标记的长暂停_Java_Garbage Collection_Heap Memory_G1gc - Fatal编程技术网

Java G1GC带初始标记的长暂停

Java G1GC带初始标记的长暂停,java,garbage-collection,heap-memory,g1gc,Java,Garbage Collection,Heap Memory,G1gc,使用j7u5,G1GC “-Xms3200m-Xmx3200m-XX:+UseG1GC-XX:ParallelGCThreads=14-XX:congcthreads=4-XX:MaxGCPauseMillis=40-XX:NewRatio=2-XX:surviorratio=10-XX:+PrintGC-XX:+printgcDatestaps” 对于给定的性能测试,我的应用程序在运行5小时后会出现长时间的暂停,这是可以预料的。除了这个大的(而且只有一个),还有一些小的初始标记阶段 有什么建议

使用j7u5,G1GC

“-Xms3200m-Xmx3200m-XX:+UseG1GC-XX:ParallelGCThreads=14-XX:congcthreads=4-XX:MaxGCPauseMillis=40-XX:NewRatio=2-XX:surviorratio=10-XX:+PrintGC-XX:+printgcDatestaps”

对于给定的性能测试,我的应用程序在运行5小时后会出现长时间的暂停,这是可以预料的。除了这个大的(而且只有一个),还有一些小的初始标记阶段

有什么建议可以找出这个长暂停的原因,以及如何调整它以避免影响延迟目标(百分位数98%,99.999%)的长暂停吗?


对于日志记录,请使用
-XX:+PrintGCTimeStamps-XX:+PrintGCApplicationStoppedTime-XX:+printgcApplicationcCurrentTime
更好地了解问题和瓶颈

建议在G1GC中使用
-XX:+UnlockExperimentalVMOptions-XX:+AggressiveOpts-XX:+doescapealysis-XX:+UseCompressedOops
选项(如果本机/服务器和JDK版本支持这些选项)

另外,请将
-XX:GCPauseIntervalMillis=VALUE
-XX:MaxGCPauseMillis=VALUE
组合使用(它将控制您的暂停,最好通过进行一些研发来获得两个参数的最佳拟合值组合)顺便说一句,我们成功地使用了-XX:maxgcpauseimlis=400-XX:gcpauseiintervalmilis=8000的值组合


-XX:NewRatio
参数的默认值是40,因此最好是40或大于40,例如
-XX:NewRatio=50

G1 GC是一个具有默认值的自适应垃圾收集器,使其能够在不修改的情况下高效工作。有关更多详细信息,请参阅下面的问题

如果您遵循oracle推荐的上述建议:

  • 删除以下参数

    -XX:SurvivorRatio=10 
    
  • 与默认值200 ms相比,
    MaxGCPauseMillis=40
    过于激进。有一个合理的暂停时间目标

  • 根据服务器中CPU核心的数量,根据建议更改-
    XX:ParallelGCThreads=14-XX:congcthreads=4


  • 除了暂停时间目标、并行gc线程等,对大多数参数使用默认值。G1gc使用默认值的性能更好,如上文第一节所述。有关最佳VM设置,请参阅,
    -XX:SurvivorRatio=10