ITエンジニアの技術メモ

神奈川在住のITエンジニアの備忘録です。おもにプログラミングやネットワーク技術について、学んだことを自分の中で整理するためにゆるゆると書いています。ちゃんと検証できていない部分もあるのでご参考程度となりますが、誰かのお役に立てれば幸いです。

Javaのプロセスに対して外部からGCを実行させる。

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プロセスに接続できなかった。