開発中に空きメモリの量を調べたいことがたまにあります。
Androidアプリの場合はDDMSで調べられますが、これをつかうとアプリの動作が重くなったりするので、特にアプリのパフォーマンスが問題になるときはDDMSをつかえないことがあります。
そのときに、メモリの空き容量だけですが、実行速度に影響をあたえずに簡単に調べる方法があります。
です。
このメソッドは空きメモリの量をlongで返します。
オブジェクトごとやクラスごとの消費量といった細かいデータがほしいときには使えませんが、
とにかく簡単にメモリの空き容量をログに出したいときには便利です。
Runtime#freeMemory()は次のように使います。
MemoryTest.java
public class MemoryTest {
public static void main(String[] args) throws IOException {
List<String> list = new ArrayList<>();
for (int i = 0; i < 10000000; i++) {
list.add(new String());
if (i % 1000 == 0) {
System.out.println(Runtime.getRuntime().freeMemory());
}
}
}
}
このプログラムを実行すると、徐々にGCが走ってもほとんどメモリが空かなくなってゆき最後にはOOMが発生する様子を観察することができます