У меня есть кусок кода, который загружает в память очень большое изображение. Так что казалось разумным назвать
System.gc();
перед загрузкой изображения. Из того, что я могу сказать, это работает без проблем.
Вчера я решил использовать довольно полезную часть программного обеспечения под названием FindBugs , которая сканирует ваш код и сообщает о проблемах, которые могут вызвать ошибки или вообще не рекомендованные стратегии. Проблема в том, что об этом фрагменте кода, о котором я упоминал, сообщают. Описание таково:
... форсирует сборку мусора;
чрезвычайно сомнительно, за исключением
код тестирования
И это уточняет:
Код явно вызывает мусор
коллекция. За исключением конкретного использования в
бенчмаркинг, это очень сомнительно.
В прошлом были ситуации, когда люди
явно вызвал мусор
коллектор в подпрограммах, таких как закрыть или
доработка методов привела к огромным
производительность черных дыр. отбросы
Коллекция может быть дорогой. любой
ситуация, которая заставляет сотни или
тысячи сборщиков мусора
довести машину до ползания.
Итак, мой вопрос: НЕТ, это нормально - программно вызывать сборщик мусора в таком случае? Мой код вызывает его только один раз, и используемый метод используется редко. И если это не нормально называть его, то что вы должны делать в случае, когда вам нужно как можно больше памяти, прежде чем делать очень интенсивную память, и вам нужно освободить столько памяти, сколько возможно до нее?