【发布时间】:2011-01-11 19:21:57
【问题描述】:
我不是在寻找通常的“您只能使用 System.gc() 在 Java 中提示 GC”的答案,这根本不是这个问题的意义所在。
我的问题不是主观的,而是基于一个现实:GC 可以在 Java 中被强制用于一个事实。我们每天使用的很多程序都可以做到这一点:IntelliJ IDEA、NetBeans、VisualVM。
它们都可以强制 GC 发生。
它是如何完成的?
我认为他们都在使用 JVMTI,更具体地说,是 ForceGarbageCollection(注意“Force”),但我该如何自己尝试呢?
http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html#ForceGarbageCollection
还要注意,这个问题不是关于“为什么”我想这样做:“为什么”可能是“好奇”或“我们正在编写类似于 VisualVM 的程序”等。
问题实际上是“如何使用 JVMTI 的 ForceGarbageCollection 强制 GC”?
JVM 是否需要使用任何特殊参数启动?
是否需要任何 JNI?如果有,具体是什么代码?
它只适用于 Sun 虚拟机吗?
欢迎提供任何完整且可编译的示例。
【问题讨论】:
标签: java garbage-collection jvmti