new一个Object对象占用多少内存?
Java的自动内存管理机制( automatic storage management system known as a garbage collector )省却了很多编码工作,大大地提高了Java的生产力,而且JVM的性能也越来越好,特别是 G1 的出现,改善了垃圾回收中 stop the world 的状况。 也许很多人都没有考虑过这个问题, new一个Object对象到底占用多少内存呢( Object obj = new Object() )? 这里很明确的是obj是一个指向对象的引用( reference - there are three kinds of reference types: class types,array types, and interface types ),引用的长度决定了Java的寻址能力,32位的JDK是4字节,64位的JDK是8字节( 指针未被压缩的情况下 )。 因为obj对象没有任何数据(field), 会在堆上为它分配空间吗?如果分配空间,里面存储了什么内容? 以面向对象的思维来分析,对象封装了数据和行为,是一个统一的整体,虽然obj对象没有数据,但是有行为(Object类定义了12个方法)。 当我们执行完new操作后,obj的值为堆内存的地址,既然obj都指向一块内存了,说明是 会在堆上为其分配空间 的。 那么分配的空间有多大