2009-08-22 13 views
0

私はJavaを使い慣れていないので、アプレットにPNG画像を追加したいと思います。Javaアプレットにpng画像を追加する

例外スレッドで「イメージフェッチャ0」java.lang.OutOfMemoryErrorを::Javaヒープスペース java.awt.image.DataBufferIntで(不明なソース) 私は次のエラーが表示され、この画像を追加し、いくつかの理由から、 java.awt.image.Raster.createPackedRaster(不明なソース) at java.awt.image.DirectColorModel.createCompatibleWritableRaster(不明なソース) at sun.awt.image.ImageRepresentation.createBufferedImage(不明なソース) at sun.awt。 image.ImageRepresentation.setPixels(不明なソース) at sun.awt.image.ImageDecoder.setPixels(不明なソース) at sun.awt.image.PNGImageDecoder.sendPixels(不明なソース) at sun.awt.image.PN sun.awt.image.ImageFetcher.runでGImageDecoder.produceImage(不明なソース)sun.awt.image.InputStreamImageSource.doFetchで (不明なソース)sun.awt.image.ImageFetcher.fetchloopで (不明なソース) (不明ソース)

jpegイメージを追加しようとするとうまくいきます。これを回避するにはどうしたらいいですか?

+0

同様のポストもあります - http://stackoverflow.com/questions/1045279/how-can-i-display-a-bitmap-image-inは、 -a-java-applet –

答えて

1

あなたのPNGイメージの大きさはどれくらいですか?あなたが私に与えたスタックトレースで判断すると、ロードした画像からBufferedImageを作成しようとすると、ヒープスペースが足りなくなっているようです。イメージを小さなサイズにサイズ変更してみることもできます。

あなたは、まずその問題を解決するかどうかを確認するために、ヒープサイズを大きくしてみてください可能性 - それは恒久的な解決策(誰がアプレットを占有メモリを好きではない)ではないでしょうが、アプレットにjava_argumentsパラメータを参照してください。また、プロファイラを使用してアプリケーションを実行し、大部分のメモリを消費していることを確認する必要があります。 OutOfMemoryErrorはどこかでメモリリークを意味する可能性があります。ヒープはイメージをロードしようとするとすでにオーバーフィルされている可能性があり、イメージのロードによってイメージがいっぱいになる可能性があるので、イメージローディングクラスの外にいる可能性もあります。最大の消費者を教えてくれるので、visualvmのプロファイラを使用してみてください。

はそれが役に立てば幸い:)

-- Flaviu Cipcigan

+0

私は、よくあなたに感謝フラビウ – vondip