如何强制从 Shell 收集垃圾?

2022-08-31 08:34:14

所以我正在一个远程盒子上查看带有jmap的堆,我想强制对它进行垃圾回收。你如何做到这一点而不弹出jvisualvm或jconsole和朋友?

我知道你不应该强制垃圾回收 - 你应该弄清楚为什么堆很大/越来越大。

我还意识到System.GC()实际上并没有强制垃圾回收 - 它只是告诉GC你希望它发生。

话虽如此,有没有办法轻松做到这一点?我缺少一些命令行应用程序?


答案 1

从 JDK 7 开始,您可以使用 JDK 命令工具 'jcmd',例如:

jcmd <pid> GC.run


答案 2

如果运行 ,这将在堆输出任何内容之前强制在堆上显示完整的 GC。jmap -histo:live <pid>