我可以从控制台强制运行Java应用程序到Garbage Collect吗?
只是为了抢先回复:
答案 0 :(得分:2)
如果
,JVisualVM可以连接到远程进程所以你不需要在同一台机器上的xWindows环境中发挥魔力......
传递给java的示例或参数
-Dcom.sun.management.jmxremote.port=9005\
-Dcom.sun.management.jmxremote.authenticate=false\
-Dcom.sun.management.jmxremote.ssl=false
答案 1 :(得分:2)
创建一个只执行System.gc()的简单Java代理。 使用其pid附加到目标JVM并运行它。 从这里开始: http://docs.oracle.com/javase/6/docs/jdk/api/attach/spec/com/sun/tools/attach/VirtualMachine.html
答案 2 :(得分:2)
实际上JDK的jmap工具会触发完整的GC。试试jmap histo
答案 3 :(得分:1)
否..您无法强制垃圾收集器执行垃圾回收。使用System.gc(),您只能请求垃圾收集器执行垃圾收集。
答案 4 :(得分:-1)
考虑使用Oracle JRockit JVM运行程序。在那里,您可以使用JRCMD并发出JVM级管理命令/监视,包括强制GC。是的,(在JRockit和其他地方),System.gc()做不必然做任何事情!