簡體   English   中英

帶有 -Xmx500m 的 JVM 實際上消耗了 1GB 的內存

[英]JVM with -Xmx500m actually consumes 1GB of memory

我正在嘗試在 VPS 上以“始終在線”模式長時間托管 Swing Java 應用程序,並且願意將其裝入 1GB 大小(Ubuntu 作為主機操作系統)。

應用程序以“-Xmx500m -XX:+UseConcMarkSweepGC”開頭,它應該適合(與所有其他輔助人員一起)放入 1GB 的總 RAM 中似乎是合理的,但是......在運行應用程序 2-3 天后top說 java僅應用程序就占用了近 1GB(請參閱 USED 列)——比指定的“-Xmx500m”多兩倍:

KiB Mem :  1009136 total,    66084 free,   867128 used,    75924 buff/cache
KiB Swap:   716796 total,     9388 free,   707408 used.    28472 avail Mem

  PID    VIRT    RES   SWAP   USED    SHR S %CPU %MEM     TIME+ COMMAND
 2401 3076084 529648 467832 997480   1900 S 31.0 52.5 916:05.68 java
 2218  285544  37548  74720 112268   8800 S  6.9  3.7 269:12.60 Xvnc4
 2388  709104  11448   9744  21192   7760 S  6.9  1.1  24:45.88 mate-terminal
  883  643820  10932   2540  13472   5624 S  0.0  1.1   1:48.43 do-agent
 2327  544648   4092   5992  10084   2436 S  3.4  0.4   6:38.31 clock-applet

應用程序中的實際“堆使用”大約為 350MB(由應用程序本身顯示)。

jstat -gc 2401我看到只有大約 630MB 的使用量。 其他 ~360MB 在哪里? 我缺少什么? 是否可以通過某些 JVM 選項減少內存使用量?

S0C    S1C     S0U   S1U    EC       EU        OC         OU     
8512.0 8512.0  0.0   2161.2 68160.0  67668.5   426816.0   249483.9  

MC       MU       CCSC    CCSU     YGC   YGCT      FGC   FGCT    GCT
112464.0 108027.1 14160.0 13222.6  48701 1484.856  124   590.113 2074.968

https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html

S0C - Current survivor space 0 - 8MB
S1C - Current survivor space 1 - 8MB
EU - Current eden space capacity - 68 MB
OC - Current old space capacity - 426 MB
MC - Metaspace capacity - 112 MB
CCSC - Compressed class space capacity - 14 MB
--> 636 MB

USEDRES + SWAP的總和。
您的真實內存中只有 +500Mb,而交換中只有 +400Mb,所以這是正常行為。

這里top的手冊和更多關於交換的解釋

暫無
暫無

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

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