0
There are no destructors in Java. The most similar is the finalize() method, but that is not the same. It is called, when the garbage collector is ready to throw the object into the bin (out of memory) and there are no references to the object already. However, if you create some new references under finalization, it can mess up some stuff. And the main reason not to use it - as in C++ you can - they are not predictable. If your program shuts down, it is possible, that the finalize() method is not even being called! So do not use finalize for needed resource freeing.
If you care about whether an object is destroyed:
You can use Weak-, Soft- and PhantomReference types to follow an object in memory. They let the object be garbage collected, and so not strong references. But that is, why we use them. They can tell, if the object is still there or not. Usable for caches, weak collections....
WeakReference:
Has a getter to the object. Returns null, if the object got garbage-collected.
SoftRederence:
Same as WeakReference, bur is more "cachey", object get garbage-collected later, even if there are no more references.
PhantomReference:
The getter always returns null. Used only to be added to ReferenceQueue (list of already freed object reference objects).
These two are your tools to monitor object deaths, use them wisely!