我一直在努力寻找这个问题的答案,但还是找不到。
我有一台具有 256 GB RAM 的 64 位机器。
我正在尝试执行一个链接到 MySQL 的 Java 程序。它需要一个安静的大堆大小,因为当我在几分钟后使用 VM 参数 -Xmx1024m
时会弹出:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
但是,当我尝试通过-Xmx2048m
或更大的设置程序VM参数时,它不起作用并说:
Error occurred during initialization of VM
Could not reserve enough space for 2097152KB object heap
我读到设置 -Xmx2048
对于 64 位机器来说不是问题,但我真的不知道为什么它在我的机器上不起作用。
java -version
输出:
wmic OS 获取 FreePhysicalMemory/Value 输出:
FreePhysicalMemory=251663664
wmic computersystem 获取 TotalPhysicalMemory 输出:
TotalPhysicalMemory
274811621376
wmic os 获取 osarchitecture 输出
OSArchitecture
64-bit
我无法执行 systeminfo|find "Memory"
,因为它说语法错误。我也不知道为什么。
最佳答案
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
在虚拟机初始化期间。 JVM 执行从堆到 JIT 模块的各种初始化。 如果 JVM 找不到 请求的 Xmx 的连续内存空间然后将抛出上述错误消息。
这些是虚拟内存分配,所以请不要与物理内存值混淆
请运行命令 java -verbose:init -Xmx2048 -version
此命令将告诉 JVM 在初始化时经历的步骤以及失败的步骤。
关于java - 设置 Java 堆大小不适用于 256GB RAM 64 位机器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28293649/