@click_f

Как освободить память в java?

  • Как принудительно освободить память до того, как переменная выйдет за пределы видимости?
  • Какие существуют стандартные средства для этого?

Буду благодарен за любые советы.
  • Вопрос задан
  • 3710 просмотров
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
1. Самое простое. var = null; Если нужно ещё и мусорщика пустить — ну пусти, System.gc();
2. Если нужно, чтобы объект не удерживался — WeakReference. Как только объект исчезнет, слабая ссылка перещёлкивается в null. Бывает нужно: 1) если объекты-дети переживают своих владельцев, и при этом потерять владельца — это несмертельно; 2) когда строим какой-нибудь временный список.
3. Не выдавать безымянный объект наружу, если он переживает создателя. В безымянных объектах есть ссылка на создателя. Выдавать лямбду: если создатель не нужен, ссылки никакой не будет.
4. Аналогично с внутренними классами — если он переживает создателя, делай его static.
5. String.intern, если вы работаете с кучей мелких одинаковых строк. Ну или наладить свой кэш :)
6. Использовать объектные пулы и прочие структуры, снижающие нагрузку на мусорщик.
7. Разбивая строки на мелкие кусочки, использовать паттерн doSomething(String data, int start, int length), не вытягивая подстроку физически. Использовать StringBuilder.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
miraage
@miraage
Старый прогер
offheap, например
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы