Javaプロセスのメモリチェック方法
概要
Javaプロセスのメモリ使用量をいろいろな方法で調査する機会あったので、まとめておきます。(内容としてはそれぞれあっさりです。)
-
- 4.1. PerfCounter.print
- 4.2. VM.native_memory
1. GCViewer
Changelog · chewiebug/GCViewer Wikiからダウンロードする。
|
|
GCViewerで確認する。

- GCログの取得方法はこちらを参照
2. JMC(JDK Mission Control)
JMC 7 GA Releaseからダウンロードする。
JMC起動して、メモリを確認したいJavaプロセスを選択する。

3. jstat
|
|
|
|
- 各列の説明はこちらを参照。
4. jcmd
いろんなオプションがありますが、今回はPerfCounter.printとVM.native_memoryを見てみました。
-
jcmd: 引数なしならjpsと同じ -
jcmd VM.uptime: Javaプロセスの起動後の経過時間 -
jcmd Thread.print: スレッドダンプ。jstackと同じ。 -
jcmd GC.heap_dump: ヒープダンプ。jmapと同じ。 -
jcmd -gcnew 1s: 毎秒のGC領域のサイズを見る -
jcmd PerfCounter.print: JVM内部で保持している様々なカウンタを取得 -
詳しくはこちらを参照。
4.1. PerfCounter.print
|
|
4.2. VM.native_memory
|
|
5. gcore
|
|
- 詳しくはこちらを参照。
6. pmap
|
|
- 詳しくはこちらを参照。
7. PSS (proportional set size)
|
|
|
|
- 詳しくはこちらを参照。
8. Reference
- Java Virtual Machine調査方法 - クロノスの技術系ブログ
- Metaspace
- 恐怖の JVM 大量メモリ消費!メモリリークの謎を追え!! - Cybozu Inside Out | サイボウズエンジニアのブログ
- memory leaks - Valgrind and Java - Stack Overflow
- JavaVMのメモリ管理に関するまとめ(Javaヒープ、GC、ダンプ等) - ぺーぺーSEのブログ
- Javaはどのように動くのか~スライドでわかるJVMの仕組み
- プロセス毎のメモリ消費量を調べたい時に使えるコマンド - Qiita
- 俺様とJavaOne 2013(中編) - 谷本 心 in せろ部屋
- GCViewerの使い方メモ - Qiita