Добавление изображения PNG в Java-апплет - PullRequest
0 голосов
/ 22 августа 2009

Я очень новичок в Java, я хочу добавить изображение PNG в мой апплет. По какой-то причине, когда я добавляю это изображение, я получаю следующую ошибку:

Исключение в потоке "Сборщик изображений 0" java.lang.OutOfMemoryError: Пространство кучи Java at java.awt.image.DataBufferInt. (Неизвестный источник) в java.awt.image.Raster.createPackedRaster (Неизвестный источник) в 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.PNGImageDecoder.produceImage (Неизвестный источник) at sun.awt.image.InputStreamImageSource.doFetch (Неизвестный источник) at sun.awt.image.ImageFetcher.fetchloop (Неизвестный источник) at sun.awt.image.ImageFetcher.run (неизвестный источник)

Когда я пытаюсь добавить изображение в формате JPEG, оно работает нормально. Как мне обойти это?

1 Ответ

1 голос
/ 22 августа 2009

Насколько велико ваше изображение PNG? Судя по трассировке стека, которую вы мне дали, похоже, вам не хватает места в куче, когда вы пытаетесь создать BufferedImage из загружаемого вами изображения. Вы можете попробовать изменить размер изображения до меньшего размера.

Вы можете сначала попытаться увеличить размер кучи, чтобы посмотреть, решит ли это проблему - см. Параметр java_arguments для апплета, хотя это не будет постоянным решением (никто не любит память апплет). Вам также следует запустить приложение через профилировщик и посмотреть, что потребляет большую часть памяти. OutOfMemoryError может означать утечку памяти где-то. Он может даже находиться за пределами вашего класса загрузки изображений, поскольку куча уже может быть переполнена при попытке загрузить изображение, и загрузка изображения вызывает его заполнение. Попробуйте использовать профилировщик в visualvm , так как он расскажет вам крупнейших потребителей.

Надеюсь, это поможет:)

-- Flaviu Cipcigan

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...