【发布时间】:2012-08-12 10:33:35
【问题描述】:
在我们的场景中,我们启动了20+个java进程来处理我们的业务,我们发现每个进程都吃掉了500M+内存,所以我们总共消耗了服务器上的几个G内存,客户抱怨启动我们的进程后他们的服务器变慢了.
我试过了,即使是HP-UX中最简单的“HelloWorld”程序,它也吃掉了500M内存!如果我为它设置-Xmx,它似乎不能减少到小于320M。实际上,我们希望每个进程只消耗 64M 内存。
那么,任何人都知道如何在 HP-UX (java6) 上将 Java 程序的内存限制设置为 64M-128M???
【问题讨论】:
-
如果您在 HP-UX 上运行 java,哪些命令行键可用于 VM 内存控制?
-
$JAVA -Xms512m -Xmx512m alu.nbi.xos.script.FileOutput $@ 但是即使我们将“-Xms512m”减小到较小的值,例如“-Xms128m”,它仍然会占用 320m+ 内存。
-
据我所知,进程占用的内存和堆内存是不同的东西。您的进程占用了 320 兆字节,但初始堆大小(
xms键)设置为 128 兆字节。我认为这是一个虚拟机功能,它在这个平台上需要太多内存才能启动和运行。换句话说,这可能是 JVM 中的一个错误,应该报告给 JVM 供应商。 -
拉斐尔,你是对的。正如我们在顶部输出中观察到的,我们的进程在“RES”列中消耗了非常小的内存(我认为这是我们程序的堆+堆栈),但在“SIZE”列中消耗了非常大的内存(我认为“java”程序本身消耗了大部分内存)。如果可以,我只想和您或其他人核实一下:每个 HP-UX 平台 java 是否都有这个问题(或者我们不能称之为问题)?有人和我一样有这种经历吗?我没有通过谷歌找到任何关于此的内容。
-
对不起,我应该在我之前提到的命令行中更正一点:实际上我们总是对 xms 和 xmx 使用相同的值。当我说将 -Xms512m" 减少到 "-Xms128m" 时,我的意思是我们将 xms 和 xmx 都设置为 128m。