Исключение в потоке "AWT-EventQueue-0" java.lang.OutOfMemoryError: пространство кучи Java - PullRequest
2 голосов
/ 01 октября 2010
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)

Я получаю это сообщение об ошибке при загрузке приложения веб-запуска из производства. Когда я загружаю тот же производственный код из eclipse, вышеупомянутая ошибка «java.lang.OutOfMemoryError: Java heap space» исчезает, и все работает нормально. В чем может быть причина, почему он работает в затмении, а не в автономном режиме.

-pad

Ответы [ 2 ]

1 голос
/ 01 октября 2010

Размер кучи Java по умолчанию (по крайней мере, в последний раз, когда я его исследовал) составляет 128 МБ.Последняя версия Eclipse (т.е. Helios) настроена на работу с размером кучи по умолчанию 512 МБ.(см. файл eclipse.ini в базовом пути Eclipse).

Таким образом, вы, вероятно, наблюдаете такое поведение, поскольку вашему приложению требуется размер кучи, превышающий 128 МБ ... которого оно не получает от вашегосистемные JVM по умолчанию, но попадает в процесс Eclipse JVM.

В вашем файле веб-запуска ".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

0 голосов
/ 01 октября 2010

Ваша настройка максимального размера кучи по умолчанию в eclipse, вероятно, отличается от настройки по умолчанию для вашего веб-запуска java.
Вы можете отредактировать дескриптор jnlp, указав параметр max-heap-size, добавив следующий тег:

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