class Test
{
public static void main(String[] agrs)
{
String[] person = new String[20];
String pername = "Peter";
person[0] = pername;
pername = null;
System.out.println(person[0]); // prints " Peter " on screen
System.out.println(pername); // no content in pername. prints " null "
}
}
Объект pername, подходящий для сбора мусора?
Я думаю, что он имеет право, потому что человек [0] содержит «Питер», а человек [0] больше не ссылается на имя.объекты, имеющие право на сбор мусора в java
но pername завершил свой job..it не имеет ничего общего после присвоения ему нулевой – blue
Да, я говорю, что это просто ссылка. И 'pername', и' person [0] 'указывают на тот же экземпляр String в кучевой памяти. Даже если вы сделали точку «pername» равной нулю, 'person [0]' все еще указывает на исходный экземпляр String и, следовательно, не будет gced. Ссылка 'pername' останется в стеке до конца вашего основного метода. Вы можете указать его на какой-то другой экземпляр String. –
Это будет сбор мусора, но вы не знаете, когда это произойдет, потому что у gc есть собственный алгоритм и gc, кстати довольно сложный ... – andy007