Java: How do you really force a GC using JVMTI's ForceGargabeCollection?
- by WizardOfOdds
I'm not looking for the usual "you can only hint the GC in Java using System.gc()" answers, this is not at all what this question is about.
My questions is not subjective and is based on a reality: GC can be forced in Java for a fact. A lot of programs that we use daily do it: IntelliJ IDEA, NetBeans, VisualVM.
They all can force GC to happen.
How is it done?
I take it they're all using JVMTI and more specifically the ForceGarbabeCollection (notice the "Force") but how can I try it for myself?
http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html#ForceGarbageCollection
Also note that this question is not about "why" I'd want to do this: the "why" may be "curiosity" or "we're writing a program similar to VisualVM", etc.
The question is really "how do you force a GC using JVMTI's ForceGarbageCollection"?
Does the JVM needs to be launched with any special parameters?
Is any JNI required? If so, what code exactly?
Does it only work on Sun VMs?
Any complete and compilable example would be most welcome.