java-将堆空间增加到最大限制

时间:2018-12-03 04:56:27

标签: java memory

所以我正在使用intellij并正在开发一个程序。我将VM选项留空并运行了程序,它抛出了outofmemory:java heap space异常。

因此,我决定通过添加-Xmx1024m来增加堆空间。程序运行一半,然后再次引发相同的错误。我基本上是试图从pdf文档中提取单词(有1000万个单词),所以这是一个很大的文件。

我尝试将值增加到5000m,但显示为invalid maximum heap size the specified size exceeds maximum representable size。有谁知道我指定的最大可能大小是多少,以便它可以完全运行我的程序?

2 个答案:

答案 0 :(得分:0)

JVM堆大小的值与系统中的物理内存量直接相关。将初始堆大小和最大堆大小设置为4096以开始调整,因为32位操作系统的地址空间限制为4 GB,而与系统中的物理内存量无关。

  • 谈论Java中的默认堆大小,从Java 6 update 18开始 JVM如何计算32中默认堆大小的重大变化 和64位计算机以及客户端和服务器JVM模式:

  • 初始堆空间和最大堆空间较大以进行改进 性能。

  • 默认最大堆空间为最大物理内存的1/2,最大为 192字节和物理内存的1/4,最大大小为1Gig。因此对于 1Gig机器的最大堆大小为256MB 2.最大堆大小不会 在程序创建足够的对象以填充初始堆之前使用 空间要小得多,但至少为8 MB或1/64的一部分 物理内存高达1GB。

  • 对于Server Java虚拟机,默认最大堆空间为1G 32位JVM上4GB的物理内存。对于64位JVM,其32G用于 物理内存为128GB

还请注意,增加内存并不能解决很多问题,因为实际问题出在代码中。我建议您使用堆分析器,并确保代码没有问题。

答案 1 :(得分:-1)

对此没有标准值。它取决于JVM版本,不同的实现可能有不同的限制。

我认为您使用32位版本的JVM。从我的经验来看,限制在1.5GB到2GB之间。

如果使用64位操作系统,则可以安装64位JVM。实际上,您可以将任何值设置为最大内存大小。

PS:您可能会考虑更改程序以将中间结果存储在磁盘或数据库中。