java400-l-bounces@xxxxxxxxxxxx wrote on 10/20/2006 10:13:45 AM:
I have a question regarding the life of static variables within the VM. I always thought that if you instantiated an object that contained static variables, garbage collection would cleanup the object along with the static variables. For instance, say I have classes Pet and Cat. Cat contains several static variables (say names of cats) and I instantiate an instance of Cat from Pet. Do the static variables within Cat ever get GC'd. This is something I obviously missed a long time ago and feel a little sheepish for not knowing.
Static fields are stored in their class object (instance of java.lang.Class) and classes are only GC'd when their loading classloader is GC'd. So, if Cat is loaded by the same classloader as Pet, then the class Cat will survive as long as the class Pet does. A tangential question: why static fields? A real "Cat" object would have the 'name' as an instance field, eh? Just a thought... -blair
As an Amazon Associate we earn from qualifying purchases.
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.