2010-10-24 60 views
0

我已经在Java VM参数定义-Xmsx 1.3GB和我的Eclipse不允许比这更多,运行应用程序时,我得到了以下异常:在线程“应用程序终止上堆大小

异常线程3 “java.lang.OutOfMemoryError:Java堆空间

我该怎么办?

回答

1

您可以使用-mx1300m等来设置日蚀使用的最大内存量。这个限制是因为你在Windows上运行32位的java。在64位操作系统上,你不会有这个问题。

但是,它的最大内存大小,你为每个应用程序在eclipse中设置的重要。你在eclipse中的运行选项中设置了什么?

+0

我没有放任何参数,你建议用哪个参数来解决这个问题? – Tamir 2010-10-24 10:22:02

+0

用于运行应用程序的VM参数,而不是用于运行eclipse的VM参数。 – 2010-10-24 23:31:09

1

你的问题很清楚:

  • 你运行一个新的JVM的应用程序?
  • 您是否在子JVM的启动器中设置了-Xmx/-Xms参数?

如果对这两个问题中的任何一个的答案都是“否”,那么就试试......两者。 (尤其是,如果您未为子JVM设置至少-Xmx,则会得到默认堆大小,这相对较小。)

如果这两个问题的答案都是“是”,那么问题是,你正在运行到您的硬件和/或操作系统配置的界限:

  • 在一个典型的32位的Windows,一个用户进程只能寻址虚拟存储器的总2个** 31字节,其中一些将被JVM二进制文件,本地库和各种非堆内存分配所使用。 (在32位Linux上,我相信你可以达到2**31 + 2**30)。这个“修复”是使用64位操作系统和64位JVM。

  • 此外,JVM对OS可以通过虚拟内存子系统的资源请求的内存量有限制。这通常以可用RAM和用于分页的光盘文件/分区的大小之和为界。 “修复”是为了增加分页文件/分区的大小。增加更多内存也可能是一个好主意。