Windows上的java进程使用的内存少于-xms中指定的内存?

时间:2010-10-14 17:26:39

标签: java memory

我正在使用“java -xms 1280m -xmx 1280m”命令启动我的服务器。在Linux机器上,这很好用,我看到使用几乎相同内存量的进程。但是,在Windows机器上,我看到java进程使用的距离远小于1280米 - 大约500-600米。如果重要的话,我从windows任务管理器收集了这些数据。我检查的两台Windows机器都是Windows 2003服务器,分别有2GB和3GB RAM。 我一直认为用-xms指定初始堆大小将迫使java使用至少那么多的内存。我错了吗?或者,这是Windows上的Java的特点吗?

4 个答案:

答案 0 :(得分:2)

仔细观察。任务管理器经常会产生误导 - 默认情况下不会显示进程分配了多少内存。相反,显示为“使用的内存”的是为该进程交换的物理内存量。 在“视图”菜单中,选择“选择列”并添加“虚拟内存大小”。有你的记忆。您的应用程序显然从未真正使用超过500-600米,因此它从未交换过。

答案 1 :(得分:0)

最后回到电脑前进行了几次快速测试。

在运行java -xms的Windows XP计算机上,输出Unrecognised option

运行java -Xms时,我得到一个invalid intial heap size这是正确的,因为我没有给出任何值,但它接受并识别该选项。

所以看来我的评论是有效的,你需要对你的命令进行排序。

答案 2 :(得分:0)

除了Kevin D关于大写的说法之外,请注意32位Windows系统通常在最大堆大小上有一个上限。它往往会因很多因素而有所不同,但我经常在1280米左右看到它正在尝试。我怀疑这是问题,但它可能是一个相关的问题。

答案 3 :(得分:0)

Windows任务管理器专为最终用户而设计,而不是为程序员设计。后者通常更喜欢Sysinternals套件中的Process Explorer(procexp.exe)。结合vmmap.exe,将准确显示正在发生的事情。