重复:
假设在64位Linux系统上运行的Java 1.6 JVM(在Intel或AMD计算机上),创建一个简单的对象会使用多少字节的内存开销?例如,二维数组中的每一行都是一个单独的对象。如果我的数组很大,我将使用多少RAM?
假设在64位Linux系统上运行的Java 1.6 JVM(在Intel或AMD计算机上),创建一个简单的对象会使用多少字节的内存开销?例如,二维数组中的每一行都是一个单独的对象。如果我的数组很大,我将使用多少RAM?
这将取决于您使用哪个JVM。
假设您没有使用具有压缩指针的JVM,则该数组将消耗以下内存:
然后,您存储在数组中的实际对象(引用)将根据它们是什么类型的对象而消耗内存。java.lang.Object仅包含指向类的指针,因此为8字节,如果使用压缩指针,则为4字节。
对于您自己的类,您可以通过查看类中的字段来计算内存使用情况。 每个引用将占用8字节(压缩指针为4字节)。每个长整型占用8字节,int占用4字节,char/short占用2字节,byte/boolean占用1字节。但是,所有这些都将对齐为偶数总大小,该大小是4或8字节的倍数,具体取决于您使用的JVM。