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 Start应用程序时,我收到此错误消息。 当我从eclipse加载相同的生产代码时,上面的错误“java.lang.OutOfMemoryError:Java堆空间”消失了,一切正常。 可能是什么原因,为什么它在eclipse中工作而不是独立工作。
-pad
答案 0 :(得分:1)
Java的默认堆大小(至少我上次研究它)是128 MB。最新版本的Eclipse(即Helios)设置为以512 MB的默认堆大小运行。 (请参阅Eclipse基本路径中的eclipse.ini
文件。)
因此,您可能会看到这种行为,因为您的应用程序需要一个大于128 MB的堆大小...它不能从您的系统JVM的默认值中获取,但是DOES会进入Eclipse JVM进程。
在您的Web Start“.jnlp”文件中,查找第一个<j2se>
元素,并添加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
答案 1 :(得分:0)
eclipse中的默认max-heap-size设置可能与java webstart的默认设置不同。
您可以通过添加以下标记来编辑jnlp描述符以提供max-heap-size参数:
<j2se version="1.4+" max-heap-size="512m"/>