【问题标题】:Exception in thread "main" java.lang.OutOfMemoryError: Java heap space on eclipse线程“主”java.lang.OutOfMemoryError 中的异常:Eclipse 上的 Java 堆空间
【发布时间】:2013-01-17 17:55:12
【问题描述】:

我正在尝试使用 fork 和 join 框架执行此 program。当我将较小尺寸的 JPEG 图像提供给该程序时,它可以正常工作,但是当我提供大小超过 4 MB 的图像时,它会抛出以下异常:

****Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at ForkBlur.blur(ForkBlur.java:120)
    at ForkBlur.main(ForkBlur.java:110)****

我正在使用 eclipse Helios IDE。

我希望它适用于大小超过 50 MB 的较大图像

【问题讨论】:

  • 它清除了错误是什么。那么你到底想要什么?
  • 重要的是未压缩图像的大小。这可以大 100 倍。我建议增加你给正在运行的程序的最大内存。
  • 您需要设置 Java 运行时参数以在项目的运行选项中指定更大的堆大小
  • 尝试将-Xmx1g 添加到正在运行的程序的虚拟机/命令行选项中。

标签: java eclipse exception fork-join


【解决方案1】:

对我来说效果很好。

右键单击要运行的项目。运行方式 -> 运行配置 -> 参数。

然后在 VM 参数中:

-Xmx1g

【讨论】:

  • 你拯救了我的一天:*
【解决方案2】:

您需要告诉 JVM 为您的程序留出更多内存。如果从命令行运行程序,您将使用-mx 选项来指定允许JVM 使用多少内存。

例如,要允许 128MB 内存,您可以:

java -mx128M MyClass

如果从 Eclipse Helios 运行,请执行以下操作:

  1. 右键单击项目并转到properties
  2. 点击Run/Debug Settings
  3. 选择您的运行配置并单击Edit 或单击New 以使用Java Application 配置类型创建一个。
  4. Arguments 选项卡上,将-mx128M 放入VM 参数框中。

【讨论】:

  • AFAIK,是Xmx,命令行选项,mx大概是错字吧?
  • @Scorpion - mx 选项现在是标准 java 选项,不再需要前导 X。尽管-Xmx 仍然可以使用,如果您使用的是旧版本的 Java,则可能需要。
【解决方案3】:

运行程序时需要指定更大的堆大小。

如果这是您的首选工具,您可以通过 eclipse 来完成。您可以右键单击包含主要方法的文件,选择“运行方式”选项 - 这将打开一个对话框,您可以在其中设置大量命令行选项(查找参数部分)。

配置最大堆大小的命令行选项是Xmx;例如 Xmx 2g 将最大堆大小设置为 2 gb。

【讨论】:

  • 对于那些不知道的人来说,最好包括如何。
  • 你能告诉我这样做的步骤吗?
  • 我只是在完成答案,我需要几秒钟才能完成答案。我知道投反对票需要更少的时间,但仍然会要求控制这种冲动:-)
猜你喜欢
  • 1970-01-01
  • 2011-01-23
  • 2023-03-13
  • 1970-01-01
  • 2016-11-24
  • 2013-11-18
  • 2020-12-20
  • 2018-07-08
相关资源
最近更新 更多