Когда безопасно (или обязательно) использовать Image.flush ()? - PullRequest
10 голосов
/ 04 октября 2011

Я делаю свои первые шаги с изображениями и буферизованными изображениями на Java (и на самой Java), и я немного запутался в методе flush (), и мой вопрос довольно прост: когда это безопасно или даже обязательно сбросить изображение в коде?

В некоторых тестах похоже, что Image.flush () ничего не делает, но BufferedImage.flush () дает некоторые случайные результаты (иногда кажется, что часть памяти освобождается), но компонент, который я использую для рисования, останавливает рисование это на заднем плане.

Так должен ли я когда-либо использовать Image.flush () или BufferedImage.flush (), или это то, что я должен позволить JVM делать самостоятельно, или, возможно, делать это в методе finalize () объекта?

Я действительно не могу понять ...

1 Ответ

10 голосов
/ 04 октября 2011

Вам никогда НЕ НУЖНО звонить flush(), если только вы не хотите освободить память.По сути, это просто подсказка объекту: «Эй, иди и удали все свои резервные буферы памяти сейчас, вместо того, чтобы ждать, пока сборщик мусора позаботится о тебе».Это может быть полезной оптимизацией производительности, но в ней нет необходимости вызывать.

В соответствии с документами Java, вызов flush() должен оставить изображение в состоянии, когда оно может восстанавливать себя по мере необходимости, но, очевидно, выстолкнуться с проблемами, где это не так.По сути, не звоните flush(), если вы не уверены, что вам больше не нужно изображение.

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