2012年9月26日星期三

获取Java对象的大小

获取Java对象的大小

在stackoverflow上有类似的问题:

http://stackoverflow.com/questions/52353/in-java-what-is-the-best-way-to-determine-the-size-of-an-object

里面思路有以下几个:

1. 比较分配该对象前后的内存大小,差值应该就是该对象占用的内存。这个的方法是这里提出来的:

http://www.javaworld.com/javaworld/javatips/jw-javatip130.html
2. 通过反射遍历所有字段,一直到原始类型,比如int,char等,因为原始类型的大小固定,所以我们对这些原始对象的大小取和就行了。这个方法的代码在这里:

http://www.javaspecialists.eu/archive/Issue078.html
3. SourceForge上有个Java的sizeof 工程,用它来度量对象的大小。这个工程在:

http://sourceforge.net/projects/sizeof/

但是我没下到代码,不知道怎么做的。
4. 使用java5 instrument
5. 比较序列化出来的大小, 这个思路


TAG: