Будет ли эта линия

bufferedReader.readLine();

Без сохранения в переменную будет потреблять память?

0
Alaychem goes to Codidact 23 Ноя 2014 в 11:38

2 ответа

Лучший ответ

Насколько я знаю, он будет доступен для сборки мусора немедленно, потому что к нему не прикреплены никакие ссылки.

1
Sarthak Mittal 23 Ноя 2014 в 08:45

Да, он будет потреблять память, потому что он, по крайней мере, должен выделить память для результата (даже если вы не назначаете его).

Вероятно, довольно скоро память будет очищена сборщиком мусора, потому что никто не ссылается на нее. Но нет никаких гарантий, когда будет запущен сборщик мусора. И ответ на этот вопрос в любом случае не имеет значения, потому что речь идет не о временных рамках, которые выделяется память.

Также обратите внимание, что он определенно не будет «оптимизирован», потому что он запускает побочный эффект, который должен выполняться, даже если результат немедленно отбрасывается. Компилятор и JVM «знают» это, и, следовательно, с точки зрения памяти это в значительной степени похоже на присвоение результата с последующей немедленной перезаписью результата чем-то другим.

2
Johannes Weiss 23 Ноя 2014 в 08:55