"AWT-EventQueue-0"线程中的异常:java.lang.OutOfMemoryError:Java堆空间

3
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
                at java.awt.image.DataBufferInt.<init>(Unknown Source)
                at java.awt.image.Raster.createPackedRaster(Unknown Source)
                at java.awt.image.DirectColorModel.createCompatibleWritableRaster(Unknown Source)
                at java.awt.image.BufferedImage.<init>(Unknown Source)
                at sun.java2d.loops.GraphicsPrimitive.convertFrom(Unknown Source)
                at sun.java2d.loops.GraphicsPrimitive.convertFrom(Unknown Source)
                at sun.java2d.loops.MaskBlit$General.MaskBlit(Unknown Source)
                at sun.java2d.loops.Blit$GeneralMaskBlit.Blit(Unknown Source)
                at sun.java2d.pipe.DrawImage.blitSurfaceData(Unknown Source)
                at sun.java2d.pipe.DrawImage.renderImageCopy(Unknown Source)
                at sun.java2d.pipe.DrawImage.copyImage(Unknown Source)
                at sun.java2d.pipe.DrawImage.copyImage(Unknown Source)
                at sun.java2d.pipe.ValidatePipe.copyImage(Unknown Source)
                at sun.java2d.SunGraphics2D.drawImage(Unknown Source)

当我从生产环境中加载Web启动应用程序时,我收到了这个错误消息。但是,当我从eclipse中加载相同的生产代码时,上述错误“java.lang.OutOfMemoryError:Java堆空间”消失了,一切都正常工作。为什么在独立模式下不能正常工作呢?

你提供的信息不足以让我们开始解决你的问题。也许提供一些代码会更合适? - Starkey
2个回答

1
Java的默认堆大小(至少在我上次研究时)为128 MB。Eclipse的最新版本(即Helios)默认使用512 MB的堆大小运行(请参见您的Eclipse基本路径中的eclipse.ini文件)。
因此,您可能会看到这种行为,因为您的应用程序需要比128 MB更大的堆大小……它并未从系统JVM的默认值中获得,但在Eclipse JVM进程中获得了堆大小。
在您的Web Start“.jnlp”文件中,查找第一个元素,并添加一个max-heap-size属性,如下所示:
<j2se version="1.3" initial-heap-size="256m" max-heap-size="512m"/>

参考资料

http://download.oracle.com/javase/1.5.0/docs/guide/javaws/developersguide/syntax.html


0

在Eclipse中,您的默认最大堆大小设置可能与Java WebStart的默认设置不同。
您可以通过添加以下标签来编辑jnlp描述符以提供max-heap-size参数:

<j2se version="1.4+" max-heap-size="512m"/>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接