将png图像添加到java applet

时间:2009-08-22 09:47:37

标签: java image applet png

我是Java的新手,我想在我的applet中添加一个PNG图像。由于某些原因,当我添加此图像时,我收到以下错误:

线程“Image Fetcher 0”中的异常java.lang.OutOfMemoryError:Java堆空间     at java.awt.image.DataBufferInt。(Unknown Source)     at java.awt.image.Raster.createPackedRaster(Unknown Source)     at java.awt.image.DirectColorModel.createCompatibleWritableRaster(Unknown Source)     at sun.awt.image.ImageRepresentation.createBufferedImage(Unknown Source)     at sun.awt.image.ImageRepresentation.setPixels(Unknown Source)     at sun.awt.image.ImageDecoder.setPixels(Unknown Source)     at sun.awt.image.PNGImageDecoder.sendPixels(Unknown Source)     at sun.awt.image.PNGImageDecoder.produceImage(Unknown Source)     at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)     在sun.awt.image.ImageFetcher.fetchloop(未知来源)     at sun.awt.image.ImageFetcher.run(Unknown Source)

当我尝试添加jpeg图像时,它可以正常工作。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您的PNG图片有多大?根据您给我的堆栈跟踪判断,当您尝试从加载的映像创建BufferedImage时,似乎用完了堆空间。您可以尝试将图像调整为较小的尺寸。

您可以先尝试增加堆大小,看看是否能解决问题 - 请参阅applet的java_arguments参数,尽管这不是永久解决方案(没有人喜欢内存占用小程序)。您还应该通过分析器运行应用程序,并查看占用大部分内存的内容。 OutOfMemoryError可能意味着内存泄漏。它甚至可能在您的图像加载类之外,因为在尝试加载图像时堆可能已经过满,并且图像加载导致它填满。尝试使用visualvm中的探查器,因为它会告诉您最大的消费者。

希望有所帮助:)

-- Flaviu Cipcigan