启动命令如下:
java -server -Xms128m -Xmx128m -jar xxxx.jar
top命令显示如下:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
15332 root 17 0 555m 242m 11m S 0.0 12.1 1:46.95 java
疑问:
为什么VIRT和RES大于128m呢?难道-Xms -Xmx没起作用?
这两个参数只是限值
Java程序的heap
大小,如果你了解heap
和stack
那么应该知道,一般来说只有运行时动态创建的对象
才存在于heap
中另外,通过
top
命令查看到的资源情况是针对整个Java进程的,JVM在执行你的Java代码时还需要载入整个Java Runtime
,有自己的开销,这些都不包括在-Xms/-Xmx
中From Oracle's Documentation: