>>25405
>единственный способ убить объект в языках без прямого доступа к памяти — это присвоить ссылке другое значение
Да не единственный этот способ.
Допустим, есть методы
void doSomething() {
    A a = new A();
    // Что-то делаем.
}
void doSomethingElse(B b) {
    // Что-то делаем c b.
}
Есть некий другой метод. Неважно, в том же классе или нет.
void sdf() {
    doSomething();  // создалась ссылка "a"
    // Ссылка "a" больше не существует.
    // Мы ей не присваивали null, но это и не важно,
    // ведь её больше нет.
    // Ссылка zxc копируется в ссылку "b".
    doSomethingElse(this.zxc);
    // Ссылка "b" исчезла.
}