ClassmexerでJavaのオブジェクトのメモリ使用量を計測する

Classmexer


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をつけること。