我正在运行此版本的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内存?
答案 0 :(得分:5)
问题是你正在查看任务管理器中显示的默认内存列,即“内存 - 私有工作集”。这并不反映实际保留使用的内容。
在“任务管理器”中,转到“视图”菜单,然后选择“选择列”。添加“内存 - 提交大小”列。您应该看到此列反映了Java的保留堆大小。在我的测试中,它显示了约为6.6GB的命令行-Xms6G。
Here is Microsoft's page that explains what each column means.
“内存 - 私有工作集:工作集的子集,专门描述进程正在使用的内存量,但其他进程无法共享。”
“内存 - 提交大小:保留供进程使用的虚拟内存量。”