我试图以“ always-on”模式在VPS上长期托管Swing Java应用程序,并希望使其适应1GB的形状(Ubuntu作为主机OS)。
应用程序以“ -Xmx500m -XX:+ UseConcMarkSweepGC”启动,似乎(与所有其他补充人员一起)应该适合1GB的总RAM,但是在运行应用程序2-3天后…… {1}}表示,仅Java应用程序就消耗了将近1GB的空间(请参阅USED列)-比指定的“ -Xmx500m”多两倍:
top
应用程序中的实际“堆使用量”约为350MB(由应用程序本身显示)。
从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
中我只能看到大约630MB的使用量。其他〜360MB在哪里?我缺少什么?是否可以通过某些JVM选项减少内存使用量?
jstat -gc 2401
答案 0 :(得分:1)
USED
是RES
+ SWAP
的总和。
实际内存中只有+ 500Mb,而交换中只有+ 400Mb,这是正常的行为。
Here是top
和more explanations关于交换的手册。