JVM GC问题

4
在过去的几周中,我一直在为我的Glassfish服务器测试不同的JVM设置。堆的主要设置(除其他外)是:-Xms512m,-Xmx512m,-XX:NewRatio=2。我尝试了不同的GC设置,但仍然出现了长时间暂停的问题,这在启动服务器后的几天内会发生。我注意到以下情况:
1. -XX:+UseParallelGC -XX:+UseParallelOldGC - 次要GC大约每隔一分钟进行一次,主要GC每18小时进行一次。我没有遇到次要GC的问题,但在5天后出现了主要GC的问题。最初,主要GC暂停大约需要100-200毫秒,但最后一个暂停时间长达70秒。
2. -XX:+UseConcMarkSweepGC -XX:+UseParNewGC - 几乎与上面相同。次要GC很好,但不完全的主要GC暂停时间越来越长。我注意到在GC(CMS Final Remark)阶段高类卸载的问题,这是停止世界阶段。
3. -XX:+UseConcMarkSweepGC -XX:+UseParNewGC和-XX:MaxGCPauseMillis=5000。我只测试了一天,因为第二个不完整的主要GC持续时间已经达到了约20秒,所以我认为还有其他问题。
4. -XX:+UseG1GC,-XX:MaxGCPauseMillis=5000,-XX:+UseStringDeduplication而不使用-XX:NewRatio=2选项-主要GC(不完全)每12小时发生一次,我已经注意到了一些问题:
2015-05-31T18:25:25.145+0200: 83383.897: [GC concurrent-mark-start]
2015-05-31T18:25:35.563+0200: 83394.312: [GC concurrent-mark-end, 10.4145795 secs]
2015-05-31T18:25:35.563+0200: 83394.312: [GC remark 83394.312: [Finalize Marking, 0.0002939 secs] 83394.312: [GC ref-proc, 1.2128584 secs] 83395.525: [Unloading, 14.5180500 secs], 15.7320854 secs]
 [Times: user=0.14 sys=0.22, real=15.73 secs] 

GC 引用阶段花费了 15 秒,这对我来说是不可接受的。您可以看到卸载花费了大部分时间。在使用其他 GC 时也发生过这种情况,因此我认为必须存在类卸载问题。
总结:所有 GC 在一段时间内运行良好,但几天后开始出现长时间暂停的问题。我不知道为什么前几天它能正常工作,然后突然结果变得非常糟糕。我注意到更高的暂停时间是由类卸载引起的,所以我想知道是否有一些设置可以获得更好的结果。此外,我想知道您推荐我使用哪个 GC?我在配备 8GB RAM、i7 处理器和 Windows 8 操作系统的 PC 上运行内部 Web 应用程序,在同一时间最多会有 10 个客户端连接,但必须具有长时间运行时间,并且不能有长时间暂停(最长 5 秒)。请建议我还可以做些什么来缩短暂停时间。
还有一个问题:在我的情况下,使用 G1GC 而不是 CMS 或 ParallelGC 可能有什么缺点?堆太小,无法使用 G1GC 吗?
编辑:G1GC 日志在长暂停 GC 引用阶段之前和之后。
2015-05-31T18:25:25.004+0200: 83383.755: [GC pause (G1 Evacuation Pause) (young) (initial-mark), 0.1280453 secs]
   [Parallel Time: 116.2 ms, GC Workers: 4]
      [GC Worker Start (ms): Min: 83383757.6, Avg: 83383757.7, Max: 83383757.7, Diff: 0.0]
      [Ext Root Scanning (ms): Min: 97.8, Avg: 98.3, Max: 98.5, Diff: 0.7, Sum: 393.1]
      [Update RS (ms): Min: 0.2, Avg: 4.0, Max: 14.8, Diff: 14.6, Sum: 16.1]
         [Processed Buffers: Min: 1, Avg: 6.0, Max: 16, Diff: 15, Sum: 24]
      [Scan RS (ms): Min: 0.0, Avg: 0.0, Max: 0.1, Diff: 0.1, Sum: 0.1]
      [Code Root Scanning (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [Object Copy (ms): Min: 0.2, Avg: 2.5, Max: 3.7, Diff: 3.5, Sum: 10.2]
      [Termination (ms): Min: 0.0, Avg: 8.5, Max: 11.4, Diff: 11.4, Sum: 34.2]
      [GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [GC Worker Total (ms): Min: 113.4, Avg: 113.4, Max: 113.5, Diff: 0.0, Sum: 453.8]
      [GC Worker End (ms): Min: 83383871.1, Avg: 83383871.1, Max: 83383871.1, Diff: 0.0]
   [Code Root Fixup: 0.1 ms]
   [Code Root Purge: 0.0 ms]
   [String Dedup Fixup: 2.2 ms, GC Workers: 4]
      [Queue Fixup (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [Table Fixup (ms): Min: 2.0, Avg: 2.1, Max: 2.1, Diff: 0.1, Sum: 8.3]
   [Clear CT: 0.1 ms]
   [Other: 9.5 ms]
      [Choose CSet: 0.0 ms]
      [Ref Proc: 8.8 ms]
      [Ref Enq: 0.1 ms]
      [Redirty Cards: 0.3 ms]
      [Humongous Reclaim: 0.0 ms]
      [Free CSet: 0.1 ms]
   [Eden: 215.0M(215.0M)->0.0B(215.0M) Survivors: 7168.0K->7168.0K Heap: 451.5M(512.0M)->236.6M(512.0M)]
 [Times: user=0.08 sys=0.02, real=0.13 secs] 
2015-05-31T18:25:25.129+0200: 83383.883: [GC concurrent-root-region-scan-start]
2015-05-31T18:25:25.129+0200: 83383.883: [GC concurrent-string-deduplication, 160.0B->0.0B(160.0B), avg 48.3%, 0.0000070 secs]
   [Last Exec: 0.0000070 secs, Idle: 23.1834927 secs, Blocked: 0/0.0000000 secs]
      [Inspected:               3]
         [Skipped:              0(  0.0%)]
         [Hashed:               3(100.0%)]
         [Known:                0(  0.0%)]
         [New:                  3(100.0%)    160.0B]
      [Deduplicated:            3(100.0%)    160.0B(100.0%)]
         [Young:                3(100.0%)    160.0B(100.0%)]
         [Old:                  0(  0.0%)      0.0B(  0.0%)]
   [Total Exec: 2868/0.1946124 secs, Idle: 2868/83382.9701762 secs, Blocked: 13/0.0032760 secs]
      [Inspected:          304493]
         [Skipped:              0(  0.0%)]
         [Hashed:          163708( 53.8%)]
         [Known:            44808( 14.7%)]
         [New:             259685( 85.3%)     21.9M]
      [Deduplicated:       160467( 61.8%)     10.6M( 48.3%)]
         [Young:            83546( 52.1%)   6270.6K( 57.8%)]
         [Old:              76921( 47.9%)   4571.3K( 42.2%)]
   [Table]
      [Memory Usage: 4291.8K]
      [Size: 131072, Min: 1024, Max: 16777216]
      [Entries: 133319, Load: 101.7%, Cached: 6107, Added: 142389, Removed: 9070]
      [Resize Count: 7, Shrink Threshold: 87381(66.7%), Grow Threshold: 262144(200.0%)]
      [Rehash Count: 0, Rehash Threshold: 120, Hash Seed: 0x0]
      [Age Threshold: 3]
   [Queue]
      [Dropped: 0]
2015-05-31T18:25:25.145+0200: 83383.897: [GC concurrent-root-region-scan-end, 0.0140467 secs]
2015-05-31T18:25:25.145+0200: 83383.897: [GC concurrent-mark-start]
2015-05-31T18:25:35.563+0200: 83394.312: [GC concurrent-mark-end, 10.4145795 secs]
2015-05-31T18:25:35.563+0200: 83394.312: [GC remark 83394.312: [Finalize Marking, 0.0002939 secs] 83394.312: [GC ref-proc, 1.2128584 secs] 83395.525: [Unloading, 14.5180500 secs], 15.7320854 secs]
 [Times: user=0.14 sys=0.22, real=15.73 secs] 
2015-05-31T18:25:51.288+0200: 83410.045: [GC cleanup 334M->326M(512M), 0.2836092 secs]
 [Times: user=0.00 sys=0.00, real=0.28 secs] 
2015-05-31T18:25:51.570+0200: 83410.328: [GC concurrent-cleanup-start]
2015-05-31T18:25:51.570+0200: 83410.328: [GC concurrent-cleanup-end, 0.0000669 secs]
2015-05-31T18:26:03.732+0200: 83422.482: [GC pause (G1 Evacuation Pause) (young), 0.1031257 secs]
   [Parallel Time: 91.6 ms, GC Workers: 4]
      [GC Worker Start (ms): Min: 83422481.7, Avg: 83422481.7, Max: 83422481.8, Diff: 0.0]
      [Ext Root Scanning (ms): Min: 1.3, Avg: 1.7, Max: 2.7, Diff: 1.4, Sum: 6.9]
      [Update RS (ms): Min: 0.0, Avg: 22.7, Max: 89.8, Diff: 89.8, Sum: 90.8]
         [Processed Buffers: Min: 0, Avg: 7.3, Max: 15, Diff: 15, Sum: 29]
      [Scan RS (ms): Min: 0.0, Avg: 0.0, Max: 0.1, Diff: 0.1, Sum: 0.2]
      [Code Root Scanning (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [Object Copy (ms): Min: 0.5, Avg: 2.4, Max: 3.4, Diff: 2.9, Sum: 9.5]
      [Termination (ms): Min: 0.0, Avg: 64.7, Max: 86.3, Diff: 86.3, Sum: 258.9]
      [GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.1]
      [GC Worker Total (ms): Min: 91.6, Avg: 91.6, Max: 91.6, Diff: 0.0, Sum: 366.3]
      [GC Worker End (ms): Min: 83422573.3, Avg: 83422573.3, Max: 83422573.3, Diff: 0.0]
   [Code Root Fixup: 0.1 ms]
   [Code Root Purge: 0.0 ms]
   [String Dedup Fixup: 2.1 ms, GC Workers: 4]
      [Queue Fixup (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [Table Fixup (ms): Min: 1.9, Avg: 1.9, Max: 1.9, Diff: 0.1, Sum: 7.7]
   [Clear CT: 0.1 ms]
   [Other: 9.3 ms]
      [Choose CSet: 0.0 ms]
      [Ref Proc: 8.8 ms]
      [Ref Enq: 0.1 ms]
      [Redirty Cards: 0.0 ms]
      [Humongous Reclaim: 0.0 ms]
      [Free CSet: 0.1 ms]
   [Eden: 215.0M(215.0M)->0.0B(19.0M) Survivors: 7168.0K->6144.0K Heap: 443.6M(512.0M)->228.2M(512.0M)]
 [Times: user=0.30 sys=0.01, real=0.10 secs] 
2015-05-31T18:26:03.848+0200: 83422.597: [GC concurrent-string-deduplication, 160.0B->0.0B(160.0B), avg 48.3%, 0.0123951 secs]
   [Last Exec: 0.0123951 secs, Idle: 38.7017788 secs, Blocked: 0/0.0000000 secs]
      [Inspected:               3]
         [Skipped:              0(  0.0%)]
         [Hashed:               3(100.0%)]
         [Known:                0(  0.0%)]
         [New:                  3(100.0%)    160.0B]
      [Deduplicated:            3(100.0%)    160.0B(100.0%)]
         [Young:                3(100.0%)    160.0B(100.0%)]
         [Old:                  0(  0.0%)      0.0B(  0.0%)]
   [Total Exec: 2869/0.2070075 secs, Idle: 2869/83421.6719550 secs, Blocked: 13/0.0032760 secs]
      [Inspected:          304496]
         [Skipped:              0(  0.0%)]
         [Hashed:          163711( 53.8%)]
         [Known:            44808( 14.7%)]
         [New:             259688( 85.3%)     21.9M]
      [Deduplicated:       160470( 61.8%)     10.6M( 48.3%)]
         [Young:            83549( 52.1%)   6270.8K( 57.8%)]
         [Old:              76921( 47.9%)   4571.3K( 42.2%)]
   [Table]
      [Memory Usage: 2565.5K]
      [Size: 65536, Min: 1024, Max: 16777216]
      [Entries: 81061, Load: 123.7%, Cached: 6553, Added: 142396, Removed: 61335]
      [Resize Count: 8, Shrink Threshold: 43690(66.7%), Grow Threshold: 131072(200.0%)]
      [Rehash Count: 0, Rehash Threshold: 120, Hash Seed: 0x0]
      [Age Threshold: 3]
   [Queue]
      [Dropped: 0]
2015-05-31T18:26:05.769+0200: 83424.518: [GC pause (G1 Evacuation Pause) (mixed), 0.2232916 secs]
   [Parallel Time: 216.7 ms, GC Workers: 4]
      [GC Worker Start (ms): Min: 83424518.3, Avg: 83424518.3, Max: 83424518.3, Diff: 0.0]
      [Ext Root Scanning (ms): Min: 1.2, Avg: 1.6, Max: 2.6, Diff: 1.4, Sum: 6.5]
      [Update RS (ms): Min: 0.0, Avg: 0.3, Max: 0.4, Diff: 0.4, Sum: 1.2]
         [Processed Buffers: Min: 0, Avg: 4.3, Max: 7, Diff: 7, Sum: 17]
      [Scan RS (ms): Min: 56.1, Avg: 102.3, Max: 144.4, Diff: 88.3, Sum: 409.2]
      [Code Root Scanning (ms): Min: 0.0, Avg: 0.1, Max: 0.2, Diff: 0.2, Sum: 0.3]
      [Object Copy (ms): Min: 50.4, Avg: 97.6, Max: 157.7, Diff: 107.2, Sum: 390.2]
      [Termination (ms): Min: 0.0, Avg: 14.8, Max: 19.8, Diff: 19.8, Sum: 59.1]
      [GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.1]
      [GC Worker Total (ms): Min: 216.6, Avg: 216.6, Max: 216.6, Diff: 0.0, Sum: 866.5]
      [GC Worker End (ms): Min: 83424734.9, Avg: 83424734.9, Max: 83424734.9, Diff: 0.0]
   [Code Root Fixup: 0.1 ms]
   [Code Root Purge: 0.0 ms]
   [String Dedup Fixup: 1.5 ms, GC Workers: 4]
      [Queue Fixup (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [Table Fixup (ms): Min: 1.4, Avg: 1.4, Max: 1.4, Diff: 0.0, Sum: 5.6]
   [Clear CT: 0.2 ms]
   [Other: 4.8 ms]
      [Choose CSet: 0.0 ms]
      [Ref Proc: 0.9 ms]
      [Ref Enq: 0.0 ms]
      [Redirty Cards: 0.2 ms]
      [Humongous Reclaim: 0.0 ms]
      [Free CSet: 0.2 ms]
   [Eden: 19.0M(19.0M)->0.0B(21.0M) Survivors: 6144.0K->4096.0K Heap: 247.2M(512.0M)->175.2M(512.0M)]
 [Times: user=0.09 sys=0.00, real=0.22 secs] 
2015-05-31T18:26:05.992+0200: 83424.742: [GC concurrent-string-deduplication, 640.0B->152.0B(488.0B), avg 48.3%, 0.0000246 secs]
   [Last Exec: 0.0000246 secs, Idle: 2.1442834 secs, Blocked: 0/0.0000000 secs]
      [Inspected:               6]
         [Skipped:              0(  0.0%)]
         [Hashed:               5( 83.3%)]
         [Known:                0(  0.0%)]
         [New:                  6(100.0%)    640.0B]
      [Deduplicated:            5( 83.3%)    488.0B( 76.3%)]
         [Young:                5(100.0%)    488.0B(100.0%)]
         [Old:                  0(  0.0%)      0.0B(  0.0%)]
   [Total Exec: 2870/0.2070321 secs, Idle: 2870/83423.8162384 secs, Blocked: 13/0.0032760 secs]
      [Inspected:          304502]
         [Skipped:              0(  0.0%)]
         [Hashed:          163716( 53.8%)]
         [Known:            44808( 14.7%)]
         [New:             259694( 85.3%)     21.9M]
      [Deduplicated:       160475( 61.8%)     10.6M( 48.3%)]
         [Young:            83554( 52.1%)   6271.2K( 57.8%)]
         [Old:              76921( 47.9%)   4571.3K( 42.2%)]
   [Table]
      [Memory Usage: 2564.6K]
      [Size: 65536, Min: 1024, Max: 16777216]
      [Entries: 81026, Load: 123.6%, Cached: 6553, Added: 142397, Removed: 61371]
      [Resize Count: 8, Shrink Threshold: 43690(66.7%), Grow Threshold: 131072(200.0%)]
      [Rehash Count: 0, Rehash Threshold: 120, Hash Seed: 0x0]
      [Age Threshold: 3]
   [Queue]
      [Dropped: 0]
2015-05-31T18:26:08.157+0200: 83426.906: [GC pause (G1 Evacuation Pause) (mixed), 0.6216666 secs]
   [Parallel Time: 618.5 ms, GC Workers: 4]
      [GC Worker Start (ms): Min: 83426906.5, Avg: 83426906.5, Max: 83426906.5, Diff: 0.0]
      [Ext Root Scanning (ms): Min: 0.3, Avg: 8.0, Max: 15.7, Diff: 15.3, Sum: 31.9]
      [Update RS (ms): Min: 0.0, Avg: 4.5, Max: 8.5, Diff: 8.5, Sum: 17.9]
         [Processed Buffers: Min: 0, Avg: 7.0, Max: 18, Diff: 18, Sum: 28]
      [Scan RS (ms): Min: 13.4, Avg: 28.4, Max: 65.2, Diff: 51.8, Sum: 113.7]
      [Code Root Scanning (ms): Min: 0.0, Avg: 0.0, Max: 0.1, Diff: 0.1, Sum: 0.2]
      [Object Copy (ms): Min: 532.6, Avg: 577.3, Max: 604.5, Diff: 71.9, Sum: 2309.1]
      [Termination (ms): Min: 0.0, Avg: 0.2, Max: 0.3, Diff: 0.3, Sum: 0.7]
      [GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.1]
      [GC Worker Total (ms): Min: 618.4, Avg: 618.4, Max: 618.4, Diff: 0.0, Sum: 2473.6]
      [GC Worker End (ms): Min: 83427524.9, Avg: 83427524.9, Max: 83427524.9, Diff: 0.0]
   [Code Root Fixup: 0.1 ms]
   [Code Root Purge: 0.0 ms]
   [String Dedup Fixup: 1.3 ms, GC Workers: 4]
      [Queue Fixup (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [Table Fixup (ms): Min: 1.2, Avg: 1.2, Max: 1.3, Diff: 0.1, Sum: 4.9]
   [Clear CT: 0.1 ms]
   [Other: 1.6 ms]
      [Choose CSet: 0.0 ms]
      [Ref Proc: 1.0 ms]
      [Ref Enq: 0.0 ms]
      [Redirty Cards: 0.0 ms]
      [Humongous Reclaim: 0.0 ms]
      [Free CSet: 0.2 ms]
   [Eden: 21.0M(21.0M)->0.0B(21.0M) Survivors: 4096.0K->4096.0K Heap: 196.2M(512.0M)->129.4M(512.0M)]
 [Times: user=0.08 sys=0.02, real=0.62 secs] 

编辑:几个小时后的结果:

在此输入图片描述

在此输入图片描述

有很多页面/秒和页面输入/秒,还有页面错误。这正常吗?我在哪里可以设置只监视JVM的页面/秒和页面输入/秒(我只找到了页面错误)?


你将最大堆大小 (xmx) 设置为初始大小 (xms) (512)。为什么不增加它呢?i7 有足够的核心。所以 CMS 或 G1GC 应该可以很好地工作(并且默认选择)。 - TheLostMind
我不想使用太多内存,因为在这台电脑上还有其他应用程序(不是glassfish)正在运行。我认为512m的堆大小对于这个应用程序来说已经足够了。如果我将堆大小增加到1024m,主要和次要GC发生的频率会更少,但暂停时间会相同甚至更长,或者我的想法不正确吗? - user4341206
你可能需要查看这篇文章并调整你的参数 :) - TheLostMind
根据你的程序,你也可以尝试减少堆大小。较小的堆意味着更频繁的 major GC,这可能会导致较少的分页和更低的暂停时间。 - piet.t
1
如果您正在运行Java 8,请查看此处使用JDK8时长时间的类卸载暂停 - SubOptimal
显示剩余6条评论
2个回答

3
我猜想你可能走错了方向 - 我怀疑垃圾回收不是你的问题...你只运行了512MiB堆 - 对我来说,堆大小为1或2秒的长暂停。具有几十二吉字节的巨大堆可能会导致毫秒级别的主要暂停。
我认为问题实际上在于您的服务器 - 或者您提到的其他应用程序使用足够的内存将Java进程(大约比堆大50%)推入交换/虚拟内存中 - 或者您在虚拟化环境中运行应用程序(可能存在内存超额许可/内存球化问题)。
作为粗略指标,任何GC算法应该能够每秒钟处理100 MiB的堆 - 因此,如果您看到的情况比这还要糟糕,请寻找其他原因。
在这种情况下,我认为GC是症状,而不是问题。

谢谢您的回答。请问您能指导我如何检查Java进程是否被推入交换/虚拟内存,或者我是否存在内存膨胀问题吗?您如何解释前几天一切正常,突然间GC暂停时间显著增加(除了Glassfish之外,同样的应用程序一直在运行)? - user4341206
你的服务器是物理的还是虚拟的?请参考http://serverfault.com/questions/74822/how-do-i-tell-if-my-windows-server-is-swapping。 - Michael
这是一台物理服务器。 - user4341206
好的,那么我的建议是使用Windows监控工具来逐渐了解服务器上发生的情况(内存使用情况、分页、计划进程等)。在你的8 GiB中,其中2 GiB可能会被操作系统占用,因此只需要一些行为不当的程序就会给你带来问题... - Michael
好的,我会检查。谢谢。 - user4341206
你好,我在几个小时后添加了一些性能结果... 请问您能否检查是否有极端错误(我读到页面/秒和页面输入/秒的值非常高,正常情况下应该要低得多)... - user4341206

2

[时间:用户=0.14 系统=0.22, 实际=15.73秒]

这意味着它花费了比实际 CPU 时间更多的墙上时间进行 GC。你尝试过的所有 GC 都是多线程和纯 CPU 绑定的,意思是它们应该烧掉更多的 CPU 时间而不是墙上时间。

但有两个可能的原因会改变这种情况:

  • 资源饥饿,例如一部分堆被交换出去或其他进程正在占用 CPU。如@Mikaveli所建议的,使用操作系统监视工具获取更多信息。
  • 某些东西阻止 VM 在几秒钟内达到安全点。你可以使用 -XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1 来检查。

此外,由于它发生在备注暂停期间,使用 -XX:-ClassUnloadingWithConcurrentMark 可能会解决问题,但我想它只会将问题转移到常规 GC 上。

也许使用 -XX:+TraceClassUnloading 跟踪它实际上正在尝试卸载多少内容可能会有用。像 Glassfish 这样的应用程序容器可能会做一些奇怪的事情,导致大量类堆积。

编辑:对于监视,您主要需要关注可用物理内存(减去缓存)、CPU 负载、页面进出/错误。最好在进程级别监视分页,因为 JVM 不关心另一个进程是否正在等待磁盘。

至于 CMS vs. G1:这可能与您的问题无关。


好的,那么SubOptimal评论(blogs.oracle.com/poonam/entry/long_class_unloading_pauses_with)怎么样?因为我也有完全相同的问题——卸载需要14.5180500秒。 - user4341206
你并没有使用大页面。据我所知,在Windows上,您首先需要编辑一些注册表策略才能允许大页面分配。在链接的文章中,根本原因是内存被分页到磁盘(IO),正如我已经解释过的那样。在他们特定的设置中使用大页面只是起作用了,因为它们与堆的其余部分一起固定在内存中。 - the8472
好的,我会监控并在JVM中包含这些设置(除了-XX:-ClassUnloadingWithConcurrentMark,如果监控中没有显示任何问题,我稍后会包含它)。谢谢。 - user4341206
你好,请帮我解释一下以下内容:如果我使用-XX:-ClassUnloadingWithConcurrentMark,那么在标记阶段不会发生卸载,那么它将在什么时候发生?我在某个地方读到,在完整的GC期间会发生,但是如果从未激活完整的GC呢?是否可能永远不会发生卸载并且我会遇到一些内存不足异常或类似的问题?我一直在寻找答案,但我还没有找到。如果您对ClassUnloadingWithConcurrentMark有更多了解,请帮助我。 - user4341206
1
在元空间不足以容纳类时,它将执行一次完整的垃圾回收。 - the8472

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接