Я читаю об управлении памятью в JVM и что если объект больше не ссылается на него, это сбор мусора. позволяет сказать, у меня есть программакак сборка мусора в отношении строк в Java?
public test {
public static void main(String[ ] args) {
String name = "hello";
for (int i =0 ; i < 5; i++) {
System.out.println(i);
}
}
}
Как вы можете видеть, String name
нигде не используется, поэтому его ссылка хранится через вне и не мусор.
теперь у меня есть,
String name = "hello"
String name2 = name.substring(1,4)//"ell"
здесь, ссылка на hello
должен присутствовать всегда, и не может быть мусора, так как name2
использует его.
поэтому, когда эти String
или любые objects
получают сбор мусора, которые имеют ссылки, но устарели, то есть больше не используются в коде?
Я вижу один сценарий, когда обрезка массива вызывает утечку памяти и, следовательно, установление ссылки на нуль - это хороший способ сбрасывать эти устаревшие ссылки.
Текущие версии Java не содержат ссылки на 'name' в' name2', и в этом случае 'name' можно свободно собирать. Кроме того, что вы подразумеваете под «обрезкой массива»? –
@LouisWasserman Думаю, он говорит об исключении неиспользуемых записей. – chrylis