设置Java堆大小不适用于256GB RAM 64位计算机

时间:2015-02-03 07:39:20

标签: java memory heap-memory

我一直试图找到答案,但我仍然不能。

我有一台带有256 GB RAM的64位计算机。

我正在尝试执行链接到MySQL的Java程序。它需要一个安静的大堆大小,因为当我在几分钟后使用VM参数-Xmx1024m时会弹出:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

但是,当我尝试将程序VM参数设置为-Xmx2048m或更大时,它不起作用并说:

Error occurred during initialization of VM
Could not reserve enough space for 2097152KB object heap

我读到设置-Xmx2048对于64位计算机来说不是问题,但我真的不知道它为什么不能在我的计算机上运行。

java -version输出: enter image description here

wmic OS获取FreePhysicalMemory / Value 输出:

FreePhysicalMemory=251663664

wmic computersystem获取TotalPhysicalMemory 输出:

TotalPhysicalMemory
274811621376

wmic os获取osarchitecture 输出

OSArchitecture
64-bit

我无法执行systeminfo|find "Memory",因为它说错了语法。我也不确定为什么。

2 个答案:

答案 0 :(得分:1)

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

此消息暗示java堆没有足够的空间来进行进一步分配。 看来你已经设置了1G的Xmx,这对你的应用来说是不够的 否则应用程序可能会泄漏占用java堆空间的内存。

Error occurred during initialization of VM
Could not reserve enough space for 2097152KB object heap

在VM初始化期间。 JVM从Heap到JIT模块执行各种初始化。 如果JVM找不到,Java堆就会在进行初始化时继续占用空间 将抛出所请求的Xmx的上述错误消息的连续内存空间。

这些是虚拟内存分配,所以请不要与物理内存值混淆

请运行命令 java -verbose:init -Xmx2048 -version

此命令将告诉JVM在进行初始化时以及在失败的步骤中所经历的步骤。

答案 1 :(得分:0)

考虑以管理员身份运行您的应用 - 只需通过右键单击启动PowerShell控制台 - >以管理员身份运行。

Windows可能会拒绝向运行非提升的单个进程授予大量内存。

此外 - 您使用的是Windows Server还是Windows的工作站版本?通常建议将Windows Server用于此类“大型”服务。