2009-08-22 65 views
0

我對Java很新,我想添加一個PNG圖像到我的小程序。從某種原因,當我加入這個圖片我收到以下錯誤:將一個PNG圖像添加到Java小應用程序

異常在線程「影像擷取0」 java.lang.OutOfMemoryError:Java堆空間 在java.awt.image.DataBufferInt(來源不明) 在java.awt.image.Raster.createPackedRaster(未知源) 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.PN GImageDecoder.produceImage(來源不明) 在sun.awt.image.InputStreamImageSource.doFetch(來源不明) 在sun.awt.image.ImageFetcher.fetchloop(來源不明) 在sun.awt.image.ImageFetcher.run(未知來源)

當我嘗試添加一個JPEG圖像它工作正常。我如何解決這個問題?

+0

也有類似的帖子 - http://stackoverflow.com/questions/1045279/how-can-i-display-a-bitmap-image-in -a-java-applet – 2009-10-21 13:52:00

回答

1

你的PNG圖像有多大?根據您提供給我的堆棧跟蹤來判斷,當您嘗試從加載的映像創建BufferedImage時,看起來您沒有足夠的空間。您可以嘗試將圖像調整爲較小的尺寸。

您可以先嚐試增加堆大小,看看是否可以解決問題 - 請參閱小程序的參數java_arguments,儘管這不是一個永久的解決方案(沒有人喜歡內存佔用小程序)。您還應該通過探查器運行您的應用程序,並查看消耗大部分內存的內容。 OutOfMemoryError可能意味着某處存在內存泄漏。它甚至可能超出了圖像加載類的範圍,因爲在嘗試加載圖像時堆已經過滿了,並且圖像加載導致圖像填滿。嘗試在visualvm中使用探查器,因爲它會告訴您最大的消費者。

希望它能幫助:)

-- Flaviu Cipcigan

+0

我明白了,謝謝你Flaviu – vondip 2009-08-22 13:25:59

相關問題