ClassmexerでJavaのオブジェクトのメモリ使用量を計測する
import com.javamex.classmexer.MemoryUtil;
public class Hoge {
public static void main(String[] args) {
System.out.println(MemoryUtil.memoryUsageOf("aaa"));
}
}
的な感じで。
ディープサイズはこちら。
import com.javamex.classmexer.MemoryUtil;
public class CalcDeepSize {
public static void main(String[] args) {
Person person = new Person();
person.setId(100);
person.setFirstName("Taro");
person.setLastName("Suzuki");
person.setGender("male");
person.setTel("0120-11-1111");
person.setEmail("foo@example.com");
person.setBorn("Tokyo");
person.setBlood("AB");
person.setBirthDay("1991-12-12");
person.setAge(20);
System.out.println(MemoryUtil.memoryUsageOf(person)); // シャローサイズ (56B)
System.out.println(MemoryUtil.deepMemoryUsageOf(person)); // ディープサイズ (512B)
}
}
実行時に-javaagent:classmexer.jarをつけること。