Soweit ich weiß:
- Python verwendet Referenzzählung + einen Garbage Collector
- Java verwendet einen automatischen Garbage Collector basierend auf JVM
Zum Beispiel:
- Python-Code
Manchmal wird __del__ sofort gedruckt, manchmal nicht (insbesondere bei Verwendung von Zirkelverweisen).
Code: Select all
class A: def __del__(self): print("Destroyed") obj = A() obj = None print("End") - Java-Code
In Java wird die finalize()-Methode nicht immer ausgeführt, bevor das Programm endet.
Code: Select all
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"); } }
- Wann genau findet die Objektzerstörung in Python und Java statt?
- Gibt es in beiden Sprachen eine Möglichkeit, die Objektzerstörung zu erzwingen?
- Warum verhält sich __del__ in Python in manchen Fällen anders?
Mobile version