我在java VM参数中定义了-Xmsx 1.3GB,而我的Eclipse不允许超过这个,在运行应用程序时我得到了以下异常:
线程“Thread-3”中的异常java.lang.OutOfMemoryError:Java堆空间
我该怎么办?
答案 0 :(得分:1)
您可以使用-mx1300m等设置eclipse使用的最大内存。此限制将是因为您在Windows上运行32位Java。在64位操作系统上,您不会遇到此问题。
但是,它为eclipse中每个应用程序设置的最大内存大小很重要。您在eclipse中的运行选项中设置了什么?
答案 1 :(得分:1)
你的问题很不清楚:
如果对这两个问题中的任何一个的回答是“否”,那么尝试做两个问题。 (特别是,如果您没有为子JVM设置至少-Xmx,您将获得相对较小的默认堆大小。)
如果这两个问题的答案都是“是”,则问题是您遇到了硬件和/或操作系统配置的限制:
在典型的32位Windows上,用户进程只能处理总共2 ** 31个字节的虚拟内存,其中一些将由JVM二进制文件,本机库和各种非堆内存分配使用。 (在32位Linux上,我相信你最多可以2**31 + 2**30
)。对此的“修复”是使用64位操作系统和64位JVM。
此外,JVM受OS专用虚拟内存子系统资源请求的内存量限制。这通常受可用RAM和用于分页的磁盘文件/分区大小的总和限制。 “修复”是为了增加页面文件/分区的大小。添加更多RAM也可能是一个好主意。
答案 2 :(得分:0)
您可能希望查看积极的Heap选项http://java.sun.com/docs/hotspot/gc1.4.2/#4.2.2.%20AggressiveHeap|outline 它为我解决了一个类似的问题。