You cannot "destroy" objects in
Java, only create them.
When a Java object is no longer referenced by anything, it becomes eligible for garbage collection. Garbage collection is an automatic process that can happen at unpredictable times. While it was possible to force garbage collection in early versions of Java, modern-day GC doesn't run the same way as it is more incremental, so while invoking the gc() method will probably free up some memory there is no guarantee that any specific object's destroy() method would get called.
In any event, a destroy() method should never be used as part of application logic because you neer know when - or if - it will be invoked. It is intended to release resources that normal garbage collection doesn't know how to release.
You certainly wouldn't want to go around doing stuff like that to objects like
Tomcat connectors that you are only "loaned".