首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Java中怎么查看一个对象的大小

2013-02-24 
Java中如何查看一个对象的大小转自:http://zsl-oo7.blog.163.com/blog/static/353297032012322114354445/?

Java中如何查看一个对象的大小

转自:http://zsl-oo7.blog.163.com/blog/static/353297032012322114354445/

?

Java没有C/C++的sizeof,当你想查看一个new出来的对象到底在堆内存里占了多大地方的时候,就不怎么方便。尤其是,今天我想研究一下到底private属性会不会被子类“继承”,也就是说new一个子类的时候,会不会为它分配父类中private变量的空间。所以必须要sizeof一下。

?网上搜了一个帖子,教怎么在Java中实现类似sizeof方法的,原帖如下:http://www.cnblogs.com/xiaohou/articles/2179060.html?也可以参考这个英文网页:http://sizeof.sourceforge.net/?自己操作过程中遇到了点儿小曲折,这里记录一下,按如下步骤操作则不会出问题:?1、先去下载SizeOf_0_2_1.zip(http://sourceforge.net/projects/sizeof/files/),解压其中的 SizeOf.jar 到本地任意目录.最好不要带中文或者空格。比如解压到D:\java,将?D:\java\SizeOf.jar 加入到calsspath环境变量。?2、写测试代码:?import net.sourceforge.sizeof.* ; //别忘了.*?public class TestSize{??public static void main(String args[ ]){ ??SizeOf.skipStaticField(true); //java.sizeOf will not compute static fields?SizeOf.skipFinalField(true); //java.sizeOf will not compute final fields?SizeOf.skipFlyweightObject(true); //java.sizeOf will not compute well-known flyweight objects?Father fa = new Father();?System.out.println(SizeOf.deepSizeOf(fa)); //this will print the object size in bytes?}?}??class Father{private int v;?}?3、编译:javac TestSize.java??4、运行(此处需注意,要加入-javaagent参数):java -javaagent:"D:\java\SizeOf.jar" TestSize?输出结果是:JAVAGENT: call premain instrumentation for class SizeOf16?如果想用更加易读的方式输出大小,可以这样改打印结果那句:System.out.println("father's size:"+SizeOf.humanReadable(SizeOf.deepSizeOf(fa)));??OK了,准备开始测试private到底会不会被“继承”的问题

热点排行