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