簡體   English   中英

如何在Java中查看此GC的總內存使用情況

[英]How to see the total memory usage of this GC in Java

我正在嘗試查看應為進程分配多少內存。 這就是我啟動應用程序的方式。

'-server -Xmx10G -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps'

所以,我給應用程序10G。 但是我想知道它真正使用了多少。 那可能嗎? 我有此垃圾收集器日志。

5997.472: [GC pause (young), 0.0195390 secs]
   [Parallel Time: 9.6 ms, GC Workers: 8]
      [GC Worker Start (ms): Min: 5997472.0, Avg: 5997476.1, Max: 5997480.9, Diff: 8.9]
      [Ext Root Scanning (ms): Min: 0.0, Avg: 2.7, Max: 6.4, Diff: 6.4, Sum: 21.3]
      [Update RS (ms): Min: 0.0, Avg: 0.1, Max: 0.2, Diff: 0.2, Sum: 0.5]
         [Processed Buffers: Min: 0, Avg: 4.6, Max: 13, Diff: 13, Sum: 37]
      [Scan RS (ms): Min: 0.3, Avg: 1.5, Max: 1.9, Diff: 1.6, Sum: 11.8]
      [Code Root Scanning (ms): Min: 0.0, Avg: 0.2, Max: 0.3, Diff: 0.3, Sum: 1.6]
      [Object Copy (ms): Min: 0.0, Avg: 0.3, Max: 0.8, Diff: 0.8, Sum: 2.5]
      [Termination (ms): Min: 0.0, Avg: 0.4, Max: 0.5, Diff: 0.5, Sum: 3.5]
      [GC Worker Other (ms): Min: 0.0, Avg: 0.1, Max: 0.2, Diff: 0.2, Sum: 0.7]
      [GC Worker Total (ms): Min: 0.4, Avg: 5.2, Max: 9.4, Diff: 9.1, Sum: 41.7]
      [GC Worker End (ms): Min: 5997481.3, Avg: 5997481.3, Max: 5997481.4, Diff: 0.2]
   [Code Root Fixup: 0.1 ms]
   [Code Root Migration: 0.6 ms]
   [Clear CT: 1.1 ms]
   [Other: 8.2 ms]
      [Choose CSet: 0.0 ms]
      [Ref Proc: 0.4 ms]
      [Ref Enq: 0.0 ms]
      [Free CSet: 7.7 ms]
   [Eden: 5433.0M(5433.0M)->0.0B(5433.0M) Survivors: 1024.0K->1024.0K Heap: 9008.4M(10192.0M)->3575.4M(10192.0M)]
 [Times: user=0.06 sys=0.01, real=0.02 secs]
6002.843: [GC pause (young), 0.0732310 secs]
   [Parallel Time: 34.1 ms, GC Workers: 8]
      [GC Worker Start (ms): Min: 6002843.5, Avg: 6002854.0, Max: 6002862.0, Diff: 18.5]
      [Ext Root Scanning (ms): Min: 0.0, Avg: 5.3, Max: 23.1, Diff: 23.1, Sum: 42.6]
      [Update RS (ms): Min: 0.0, Avg: 0.3, Max: 1.4, Diff: 1.4, Sum: 2.6]
         [Processed Buffers: Min: 0, Avg: 6.2, Max: 27, Diff: 27, Sum: 50]
      [Scan RS (ms): Min: 0.5, Avg: 2.5, Max: 5.1, Diff: 4.6, Sum: 20.0]
      [Code Root Scanning (ms): Min: 0.0, Avg: 0.2, Max: 0.5, Diff: 0.5, Sum: 1.8]
      [Object Copy (ms): Min: 0.0, Avg: 1.6, Max: 10.2, Diff: 10.2, Sum: 12.4]
      [Termination (ms): Min: 0.0, Avg: 6.5, Max: 8.7, Diff: 8.7, Sum: 51.9]
      [GC Worker Other (ms): Min: 0.0, Avg: 1.5, Max: 3.0, Diff: 2.9, Sum: 11.9]
      [GC Worker Total (ms): Min: 8.5, Avg: 17.9, Max: 29.8, Diff: 21.3, Sum: 143.2]
      [GC Worker End (ms): Min: 6002870.4, Avg: 6002871.9, Max: 6002873.3, Diff: 2.9]
   [Code Root Fixup: 0.1 ms]
   [Code Root Migration: 1.1 ms]
   [Clear CT: 2.4 ms]
   [Other: 35.6 ms]
      [Choose CSet: 0.0 ms]
      [Ref Proc: 18.4 ms]
      [Ref Enq: 0.0 ms]
      [Free CSet: 16.9 ms]
   [Eden: 5433.0M(5433.0M)->0.0B(5430.0M) Survivors: 1024.0K->1024.0K Heap: 9010.7M(10192.0M)->3577.9M(10192.0M)]
 [Times: user=0.13 sys=0.01, real=0.07 secs]
Heap
 garbage-first heap   total 10436608K, used 6181542K [0x0000000575a00000, 0x00000007f2a00000, 0x00000007f5a00000)
  region size 1024K, 2460 young (2519040K), 1 survivors (1024K)
 compacting perm gen  total 52224K, used 51927K [0x00000007f5a00000, 0x00000007f8d00000, 0x0000000800000000)
   the space 52224K,  99% used [0x00000007f5a00000, 0x00000007f8cb5e30, 0x00000007f8cb6000, 0x00000007f8d00000)
No shared spaces configured.

那是應用程序停止運行之前的最后一個日志(該過程已完成)。 當我在機器上使用top命令時,我總是看到10G的進程,我猜這就是Xmx選項的效果。 但是,如果我知道它實際使用了多少,則可以調整並降低它。 因此,我將為其他進程留出更多空間。 如果您要查看其他日志,請告訴我。

就在這里: total 10436608K, used 6181542K 因此,在此行的時候,您的應用程序使用了大約6G的堆

不必嘗試確定最小的必需堆大小, 您可以讓JVM動態地將內存釋放回OS ,這可能會以稍微降低吞吐量為代價。

heap size ≈ live data set設置一個嚴格的限制heap size ≈ live data set是一個非常糟糕的主意。 它可能會導致過多的垃圾回收,因為它將很快填滿,或者當您的工作負載變化並且暫時需要更多內存時,將直接導致OOME。

您似乎還關心暫停時間,收集器可能會使用超出實時數據集的額外內存來實現這些目標。 如果沒有足夠的備用容量來同時執行G​​1的工作,則必須退回到完整的GC。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM