1.new出一个新对象所占内存:对象头+成员变量+内存填充
(1).对象头在32位系统上占用8bytes
具体如下图
一个新对象所占的内存
(2)成员变量所占字节:

一个新对象所占的内存

(3)内存填充:最终与8个字节对齐。

2.查看对象在堆中所占的内存的大小
写一个程序:

 public class TestDemo{
    int a=4;
    short a=4;
     try{
    	Thread.sleep(1000);//使程序进入睡眠状态
    }catch(Exception e){
    }

cmd: javac Test.java//编译
java Test//运行
cmd:
jps//查看当前正在运行着的Java程序,得到进程号
jmap histo:live 进程号>1.log
打开1.log文档,查找类名,查看字节。

按照上面指令我们来看TestDemo类所占字节数大小为16。
分析:int占4个字节,short占2个字节,对象头占8个字节,相加共占14字节。然而最终是8个字节相对齐,所以需要再填充2个字节。

相关文章: