JavaVM内で利用中のメモリ量を取得する方法

プログラム内で、現在JavaVM内で利用中のメモリ量を計測することが可能です(ある程度ですが・・・)。
私も最近知り合いから教えてもらったのですが。

ちょっとしたパフォーマンスの計測や、オブジェクトを共有すか否か検討するときとかに使えそうですね。

やり方は簡単。

Runtime.getRuntime().gc();
long usedSpace = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
System.out.println("Used space is " + usedSpace);

簡単にメソッドの説明をすると次の通です。

  • totalMemory()

Java仮想マシン内のメモリ総容量を返す。

  • freeMemory()

Java仮想マシン内の空きメモリ量を返す。


直前でGCしているのは対象のオブジェクトの、より正確な情報を取得するためであり必ずしも必要ではありません。
ある時点の、ある状態のメモリ消費量が見たい場合などは取っ払ってもいいと思います。