为什么它看起来不像-Xms和-Xmx对Java在Windows中的内存使用做了什么?

时间:2012-10-02 00:33:43

标签: java jvm

我正在运行此版本的Java:

java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

我在Amazon EC2上的Windows 2008 R2 64位服务器上运行此操作,该服务器位于具有7.5GB内存的m1.large实例中。

当我启动Java应用程序时,我正在使用此命令行:

java -Xms6G -Xmx6G -server -jar start.jar

我的目的是让Java为它的堆保留6GB,这样当我的应用程序运行时,它就能够将整个数据集加载到内存中。

但是,当我启动应用程序时,我只看到任务管理器中使用的1.3GB内存?

1 个答案:

答案 0 :(得分:5)

问题是你正在查看任务管理器中显示的默认内存列,即“内存 - 私有工作集”。这并不反映实际保留使用的内容。

在“任务管理器”中,转到“视图”菜单,然后选择“选择列”。添加“内存 - 提交大小”列。您应该看到此列反映了Java的保留堆大小。在我的测试中,它显示了约为6.6GB的命令行-Xms6G。

Here is Microsoft's page that explains what each column means.

内存 - 私有工作集:工作集的子集,专门描述进程正在使用的内存量,但其他进程无法共享。”

内存 - 提交大小:保留供进程使用的虚拟内存量。”