Javaでリストが占有するメモリのサイズを確認する方法
Javaで、Instrumentationクラスを使用してオブジェクトが占有するメモリサイズを確認できます。以下にサンプルコードを示します。
import java.lang.instrument.Instrumentation;
import java.util.ArrayList;
import java.util.List;
public class MemoryUsage {
private static Instrumentation instrumentation;
public static void premain(String args, Instrumentation inst) {
instrumentation = inst;
}
public static void main(String[] args) {
List<Object> list = new ArrayList<>();
// 添加元素到list中
// ...
long size = instrumentation.getObjectSize(list);
System.out.println("List占用的内存大小:" + size + " bytes");
}
}
まずオブジェクトのサイズを取得するためのInstrumentationオブジェクトを作成する必要がある。premainメソッドでInstrumentationオブジェクトを静的変数に格納し、後で使用する。
MainメソッドでListオブジェクトを作成し、Listに要素を追加します。最後に、instrumentation.getObjectSize(list)メソッドを使用してListオブジェクトのサイズを取得します。
インストゥルメンテーションクラスを使用するには、プログラムの実行時に追加で – javaagent:path/to/your/jar.jar という引数でjarファイルの場所指定する必要があります。