1. ホーム
  2. java

[解決済み] スレッド "AWT-EventQueue-0" で例外発生 java.lang.OutOfMemoryError: Javaヒープスペース

2022-01-31 01:43:55

質問

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 heap space"が消え、すべて正常に動作します。 なぜeclipseで動作し、スタンドアロンで動作しないのか、その理由は何でしょうか。

-パッド

解決方法は?

Javaのデフォルトのヒープサイズは(少なくとも前回調査したときは)128MBでした。 Eclipseの最新版(つまりHelios)は、デフォルトのヒープサイズが512MBで動作するように設定されています。 ( eclipse.ini ファイルをEclipseのベースパスに追加してください)。

したがって、あなたはおそらく、アプリケーションが128MBより大きいヒープサイズを必要とするために、この動作を見ています... それは、あなたのシステムJVMのデフォルトからは得られませんが、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