java - 为什么 Java 会尝试从堆中保留最大空间

标签 java heap-memory

当我尝试启动 java 时,我正在设置标志 Xms 和 Xmx 以定义堆中的最小和最大内存

 C:\ProgramData\Oracle\Java\javapath\java.exe -Xms200M -Xmx1536M

结果,Java 询问我没有足够的可用空间

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

但是,如果我设置,例如,-Xmx756,它工作正常!

那么,为什么Java不能预留内存呢?我有 16GB RAM,但使用的内存不到一半。 为什么 Java 尝试保留最大内存量,因为我设置的范围是 200 到 1536?

最佳答案

您提到的“最大”内存量需要可用(即使它在开始时没有保留 - 您可以在 jvisualvm 中看到)。由于某种原因,您的大部分物理内存都不可用。最常见的原因是:

您可能正在运行 32 位版本的 Java。请改用 64 位版本,这样您可以预留更多内存。

关于java - 为什么 Java 会尝试从堆中保留最大空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46828534/

相关文章:

java - 报告 JMH 基准测试的最大堆大小

java - 为什么我的 Eclipse 插件在一个工作区中启动正常,但在另一个工作区中却不行?

java - 2.0.9 和 2.1.0 之间的 Spring Boot eclipselink ddl 自动生成问题

javascript - 如何找到node中递归运行的函数?

Java:更改堆上的对象引用?

pyspark - 用 pip install pyspark 安装时是否有spark-defaults.conf

java - Android FirebaseRecyclerView 实现搜索用户功能时遇到的问题

java - 生成 JavaDocs?

java - 如何有效地调整图像处理算法的参数?

android - Genymotion 模拟器增加堆大小