Здравствуйте. Что происходит с объектами созданными в методе. Вот пример:
public void example() {
Integer i = new Integer(4);
}
Здесь нам приспичило создать объект типа Integer, ок, но вот мы выполнили этот метод и что произойдёт после с этим объектом? Он просто удалится из stack'a и если на его нет больше ссылок кроме этой то и из heap'a?
public class Variables {
public static Variables variables = new Variables();
private ArrayList<String> arrList = new ArrayList<>();
private Variables() {}
public ArrayList getArrList() {
return arrList;
}
}
public class Human {
private String name;
public Human(String name) {
this.name = name;
Variables.variables.getArrList().add(name);
}
public void setName(String name) {this.name = name;}
}
public class Main() {
public static void main(String[] args) {
Human human = new Human("Josh");
//Теперь у нас переменная стринг "Josh" хранится и в коллекции и в поле объекта human и нам чтобы удалить этого Джоша надо удалить этот объект из коллекции Variables.variables.getArrList().remove(0); и присвоить Null human.setName(null);
}
}
После выполнения метода объект удалится сборщиком мусора, поскольку на него нет ссылок, вот только когда именно это произойдет неизвестно. Вы не можете влиять на это процесс, но можете рекомендовать сборщику мусора удалить ненужные объекты, вместе с тем, он сам решит какие. Делается это просто - System.gc(). Но повторюсь, что это лишь рекомендация и гарантий, что этот объект удалится именно после вызова метода нет.
Если напишите вот так, то будет другой смысл:
public void example() {
Integer i = 4;
}
Потому что в этом случае будет создан не новый объект, а i будет присвоена ссылка на уже существующий объект из пула целых чисел. И сборщику мусора меньше работы
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости