Из того, что я знаю:
- Python использует подсчет ссылок + сборщик мусора
- Java использует автоматический сборщик мусора на основе JVM
Например:
- Код Python
Иногда __del__ печатается сразу, а иногда нет (особенно при использовании циклических ссылок).
Код: Выделить всё
class A: def __del__(self): print("Destroyed") obj = A() obj = None print("End") - Код Java
В Java метод Finalize() не всегда запускается до завершения программы.
Код: Выделить всё
class A { protected void finalize() { System.out.println("Destroyed"); } } public class Main { public static void main(String[] args) { A obj = new A(); obj = null; System.out.println("End"); } }
- Когда именно происходит уничтожение объекта в Python и Java?
- Есть ли в любом языке способ принудительного уничтожения объекта?
/> - Почему __del__ в Python в некоторых случаях ведет себя по-разному?
Подробнее здесь: https://stackoverflow.com/questions/798 ... do-objects