Что заставляет вас думать, что два объекта типа C
доступны для GC после строки 6? Я вижу только один (c2
). Какой инструмент вы используете, который говорит вам иначе?
Что касается вашего вопроса о передаче c1
в ваш m1
метод: то, что вы передаете (по значению), является ссылкой на объект - дескриптором, с помощью которого вы можете захватить объект, если хотите, - не копия этого. Факт, что вы передаете ссылку в m1
, абсолютно не имеет значения, фактически - вы никогда не используете эту ссылку, вы сразу же перезаписываете ее ссылкой на новый объект, который затем возвращаете (это не влияет на c1
, который все еще упоминается в main
).