如何强制从 Shell 收集垃圾?
2022-08-31 08:34:14
所以我正在一个远程盒子上查看带有jmap的堆,我想强制对它进行垃圾回收。你如何做到这一点而不弹出jvisualvm或jconsole和朋友?
我知道你不应该强制垃圾回收 - 你应该弄清楚为什么堆很大/越来越大。
我还意识到System.GC()实际上并没有强制垃圾回收 - 它只是告诉GC你希望它发生。
话虽如此,有没有办法轻松做到这一点?我缺少一些命令行应用程序?
所以我正在一个远程盒子上查看带有jmap的堆,我想强制对它进行垃圾回收。你如何做到这一点而不弹出jvisualvm或jconsole和朋友?
我知道你不应该强制垃圾回收 - 你应该弄清楚为什么堆很大/越来越大。
我还意识到System.GC()实际上并没有强制垃圾回收 - 它只是告诉GC你希望它发生。
话虽如此,有没有办法轻松做到这一点?我缺少一些命令行应用程序?
从 JDK 7 开始,您可以使用 JDK 命令工具 'jcmd',例如:
jcmd <pid> GC.run
如果运行 ,这将在堆输出任何内容之前强制在堆上显示完整的 GC。jmap -histo:live <pid>