Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: Java Language
Expertise: Beginner
Sep 7, 1999



Building the Right Environment to Support AI, Machine Learning and Deep Learning


In Java, how do I achieve the same functionality which is provided by class destructors in C++? Is there a destructor method in Java?

Java does not possess the concept of a destructor. In C++, you need to perform explicity memory management, invoking new to allocate memory and invoking delete to free memory. The C++ new operator creates new objects and invokes their constructors as part of the initialization process. Java works in much the same way. The delete operator frees the memory used by an object, invoking its destructor as part of the process. Java does not possess this feature. Instead, Java frees memory for you on its own.

Java is a garbage collected language. This means that part of the runtime system is dedicated to finding objects that are no longer referenced by any part of a program and freeing up the memory. Therefore, destructors are not needed.

The closest thing to a destructor in the Java language is the finalize() method defined in the Object class. The finalize() method of an object is invoked by the garbage collector prior to freeing its memory. However, no guarantees are made about which thread will invoke finalize() or exactly when it will be invoked. The purpose of the finalize() method is to allow objects to free resources that cannot be freed by the garbage collector (usually native resources such as file descriptors and graphics contexts). As a consequence, you normally only implement the finalize() method when you are using native code in a class.

DevX Pro
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date