【问题标题】:Adding a png image to a java applet将 png 图像添加到 Java 小程序
【发布时间】:2010-11-21 21:16:53
【问题描述】:

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

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

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

【问题讨论】:

标签: java image applet png


【解决方案1】:

您的 PNG 图像有多大?从您给我的堆栈跟踪来看,当您尝试从加载的图像创建BufferedImage 时,似乎堆空间不足。您可以尝试将图像调整为更小的尺寸。

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

希望对你有帮助:)

-- Flaviu Cipcigan

【讨论】:

    猜你喜欢
    • 2014-02-09
    • 2012-10-02
    • 2010-12-07
    • 2011-01-10
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    相关资源
    最近更新 更多