因此,每个条目的总内存为:16 + 12 + 8 = 36字节。 但是当我运行代码并检查内存时,每个条目仍然超过36个字节。
Object o=new Object():在java中空对象占八个字节,对象的引用占四个字节。所以上面那条语句所占的空间是4byte+8byte=12byte.java中的内存是以8的倍数来分配的,所以分配的内存是16byte.
举个例子:
Class O{
int i
byte j
String s
}
其所占内存的大小是空对象(8)+int(4)+byte(1)+String引用(4)=17byte,因要是8的整数倍,所以其占大小为24byte.
当然,如果类里有其他对象的话,也要把其他对象的空间算进去
因为 Java 运行在虚拟机上,虚拟机本身就占用的内存,因此 Java 程序本身加虚拟机内存导致 Java 比较占内存。相同的 Java 程序和 C 程序之间,Java 可能会比 C 占用更大的内存。但是在编写 Java 程序的时候程序员不需要过多的将心思放在内存管理上,而编写 C 程序则要小心避免发生内存泄漏。因此,从某种意义上来说,编写 Java 程序可能更加节省内存,除非你的 C 功底比较扎实。