首页 > 解决方案 > 除了 NewRatio,还需要显式设置幸存者空间吗?

问题描述

我正在分析一个使用 oracle jdk 8 的 java 应用程序。查看 gc 统计信息,S0/S1 的幸存者空间容量与幸存者比率不匹配。有人可以解释这里发生了什么吗?当我改变幸存者比率时,它不会改变幸存者的大小(容量)。我是否必须明确设置一个 jvm 参数才能使其工作?

Attaching to process ID 15084, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.201-b09

using thread-local object allocation.
Garbage-First (G1) GC with 63 thread(s)

Heap Configuration:
   MinHeapFreeRatio         = 40
   MaxHeapFreeRatio         = 70
   MaxHeapSize              = 137438953472 (131072.0MB)
   NewSize                  = 1363144 (1.2999954223632812MB)
   MaxNewSize               = 45801799680 (43680.0MB)
   OldSize                  = 5452592 (5.1999969482421875MB)
   NewRatio                 = 2
   SurvivorRatio            = 8
   MetaspaceSize            = 21807104 (20.796875MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   MaxMetaspaceSize         = 17592186044415 MB
   G1HeapRegionSize         = 33554432 (32.0MB)

Heap Usage:
G1 Heap:
   regions  = 4096
   capacity = 137438953472 (131072.0MB)
   used     = 29062893296 (27716.534896850586MB)
   free     = 108376060176 (103355.46510314941MB)
   21.146037976723164% used
G1 Young Generation:
Eden Space:
   regions  = 858
   capacity = 47815065600 (45600.0MB)
   used     = 28789702656 (27456.0MB)
   free     = 19025362944 (18144.0MB)
   60.21052631578947% used
Survivor Space:
   regions  = 9
   capacity = 301989888 (288.0MB)
   used     = 301989888 (288.0MB)
   free     = 0 (0.0MB)
   100.0% used
G1 Old Generation:
   regions  = 0
   capacity = 89321897984 (85184.0MB)
   used     = 0 (0.0MB)
   free     = 89321897984 (85184.0MB)
   0.0% used

36705 interned Strings occupying 3847064 bytes.

标签: javagarbage-collectionjvm

解决方案


推荐阅读