java - 为什么我收到 JVM 最大堆空间错误?

标签 java exception jvm heap-memory

我正在尝试运行某个具有超过1024M堆空间的java程序。尽管我有 4GB RAM 和 32 位操作系统,但它说最大是 1024M。下面是我尝试用来启动程序的批处理代码:

@echo off
java -Xmx2048M -Xms2048M -jar program.jar

有人可以解释一下为什么我收到 JVM“无法保留足够的空间”错误吗?

最佳答案

您使用的是 Windows,单个 32 位程序可以拥有的最大地址空间是 2GB。 现在,由于进程和系统需要其中一些用于内务处理(例如 .dll),因此您不能将所有这些 2GB 用于 java 堆。所以尝试少一点,例如1.5 GB。

你可以通过启动开关让32位程序获得3GB的地址空间,参见here ,如果您确实需要更多堆空间,这可以作为切换到 64 位操作系统的替代方案。

关于java - 为什么我收到 JVM 最大堆空间错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11488161/

相关文章:

java - 如何使用 MarkLogic Java API 调用路径范围索引查询?

Java - 异常评估

c++ - (不)在异常中使用 std::string

java - JVM 选项 -Xss - 它究竟做了什么?

java - Gradle:如何使一组 Java 文件面向 Android 和 Oracle JVM?

java - Tomcat JMX CPU 使用百分比

java - 使用 Apache POI 更新瀑布图

java - 服务中的竞争条件(Android)(线程太多)

java.sql.SQLException : ORA-00942: table or view does not exist, 每三次命中数据库一次

docker - Neo4j + Docker - 无法创建 JVM