Будет ли эта линия
bufferedReader.readLine();
Без сохранения в переменную будет потреблять память?
2 ответа
Насколько я знаю, он будет доступен для сборки мусора немедленно, потому что к нему не прикреплены никакие ссылки.
Да, он будет потреблять память, потому что он, по крайней мере, должен выделить память для результата (даже если вы не назначаете его).
Вероятно, довольно скоро память будет очищена сборщиком мусора, потому что никто не ссылается на нее. Но нет никаких гарантий, когда будет запущен сборщик мусора. И ответ на этот вопрос в любом случае не имеет значения, потому что речь идет не о временных рамках, которые выделяется память.
Также обратите внимание, что он определенно не будет «оптимизирован», потому что он запускает побочный эффект, который должен выполняться, даже если результат немедленно отбрасывается. Компилятор и JVM «знают» это, и, следовательно, с точки зрения памяти это в значительной степени похоже на присвоение результата с последующей немедленной перезаписью результата чем-то другим.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.