【发布时间】:2012-03-28 14:59:39
【问题描述】:
我有一个新的 VPS 来运行我和一些伙伴制作的一些 java 程序。我用这样的一行开始这个过程:
java -Xmx512M -jar program.jar
在我们的旧 VPS 上,您可以使用“top”命令查看正在使用多少虚拟和常驻内存。它将使用 600-700mb 的虚拟内存。现在在我们的新 VPS 上,使用相同的命令,虚拟内存似乎总是比 -Xmx 值多出 ~2gb。因此,虚拟内存不是大约 600-700mb,而是 2700-3000mb。
旧 VPS 运行 CentOS 5.7,新 VPS 运行 CentOS 6.2。两者都运行 JRE 1.7u3 64bit。
为什么会这样,我该如何解决?
编辑:顶部
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
27645 pyro 20 0 3003m 270m 10m S 5.0 1.7 1:19.18 java -Xmx512M -jar cserver.jar
另一个编辑: 我不质疑为什么虚拟内存使用的内存比 java 命令行中指定的多。我在质疑为什么它的使用量比以前多得多。
【问题讨论】:
-
使用'ps -ef'检查你的java进程是否确实使用了Xmx512m参数,如果是,用top的输出更新你的问题。
-
如果驻留大小为270MB且没有分页问题,是不是有问题?
-
如果程序自旧 VPS 以来没有任何更改,并且使用旧 VPS,虚拟内存将仅使用 ~600-700mb,那么是的,似乎有些不对劲。新旧 VPS 运行相同的操作系统和相同的 Java 版本。
-
操作系统没有变化。 JVM 版本没有变化。申请代码有变化吗?
-
一个非常相似的线程,得到了很好的答案。 stackoverflow.com/questions/561245/…
标签: java memory virtual-machine