Как исправить «OutOfMemoryError: java.lang.OutOfMemoryError: пространство кучи Java» в JES

#java #python #jython #jes

#java #python #jython #jes

Вопрос:

Я пытаюсь перевести изображение в оттенки серого в JES, размер изображения составляет около 3000×2000. Всякий раз, когда я его запускаю, выдает мне OutOfMemoryError: java.lang.OutOfMemoryError: пространство кучи Java.

Я довольно новичок в этом языке, поэтому не уверен, что проблема в моем коде.

 def grayscale(pic):
 for p in getPixels(pic):
  intensity = (getRed(p)   getGreen(p)   getBlue(p))/3
  setColor(p, makeColor(intensity, intensity, intensity))
  

Вывод должен быть просто версией изображения в оттенках серого

Комментарии:

1. Либо у вашего getPixels() or setColor() где-то есть утечка памяти (вызывает себя или создает слишком много переменных для хранения в стеке). Это или ваше изображение огромно.

2. @Matt его размер составляет 2953×2088. Есть идеи, как я мог бы оптимизировать свою функцию?

3. С какими структурами данных вы работаете здесь?

4. что происходит, когда вы пробуете это на меньшем изображении?

5. @AdityaSantoso Это работает нормально и дает мне то, что я ожидаю.