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

设置Java堆大小不适用于256GB RAM 64位计算机,java,memory,heap-memory,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

我一直在试图找到这个问题的答案,但还是找不到

我有一台带有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
输出:

wmic操作系统获取FreePhysicalMemory/Value输出:

FreePhysicalMemory=251663664
TotalPhysicalMemory
274811621376
wmic计算机系统获取TotalPhysicalMemory输出:

FreePhysicalMemory=251663664
TotalPhysicalMemory
274811621376
wmic操作系统获取osarchitecture输出

OSArchitecture
64-bit

我无法执行
systeminfo |查找“内存”
,因为它的语法错误。我也不知道为什么

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

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

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

此消息意味着java堆没有足够的空间进行进一步的分配。 似乎您已将Xmx设置为1G,这对于您的应用程序来说是不够的 否则应用程序可能会泄漏内存,从而占用java堆中的空间

Error occurred during initialization of VM
Could not reserve enough space for 2097152KB object heap
在VM初始化期间。JVM直接从堆到JIT模块进行各种初始化。 如果JVM找不到Java堆,则在执行初始化时Java堆将继续占用空间 请求的Xmx的连续内存空间,然后将抛出上述错误消息

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

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


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

在您的命令行上,
java-version
的输出是什么?如果您尝试
-Xmx64g
,会发生什么?嗯,事实上,我们使用的是韩国windows并没有让事情变得更简单:)无论如何,总而言之:确保你的操作系统是64位的,它“看到”RAM(签入任务管理器),你的JVM是64位的,然后你就可以开始了。否则我就没有主意了。抱歉。任何不同之处在于您从
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
?启动powershell,这会在问题所在的位置添加另一层。Elicpse不一定使用java_HOME中的java(这是我上次遇到类似问题时出现问题的原因),请检查特定于项目的设置。此外,虽然我不确定,但使用32位Eclipse可能会导致此类问题。如果什么都不起作用,最好尝试使用java-jar从控制台运行程序,看看问题是否仍然存在。不要对没有引用的文本使用引号格式。如果引用,请引用来源。