Javaのプロセスに対して外部からGC(ガベージ・コレクション)を実行させる方法についてちょっと調べた。幾つか方法があるようだが、自分でやってみてうまくいったのは以下の方法。
- jconsole コマンドを実行して立ち上がるGUI上で、対象のJavaプロセスを選択し接続。表示画面の「メモリ」タブから「GCの実行」を押下。
- jmap -histo:live <Javaプロセスのpid> を実行。
jconsole コマンドも jmap コマンドも、どちらもJavaが標準で持っているコマンドなので、簡単に実行できる。(Java 1.8にはどちらも入っていた。)
注意点としては、どちらのコマンドも、対象のJavaプロセスのユーザーと同じユーザーで実行する必要があるということ。「root ユーザだったら、それ以外のユーザーで実行されているJavaプロセスに対してもGCできるだろう」と思って、root ユーザで他のユーザで実行されているJavaプロセスに対して上述の方法でGCを試みたが、Javaプロセスに接続できなかった。