算法(4th ed)(190):基础——算法分析 6.9.3

阅读数:12 2019 年 11 月 9 日 15:44

算法(4th ed)(190):基础——算法分析 6.9.3

(内存:数组)

图 1.4.9 总结了 Java 中的各种类型的数组对内存的典型需求。Java 中数组被实现为对象,它们一般都会因为记录长度而需要额外的内存。一个原始数据类型的数组一般需要 24 字节的头信息(16 字节的对象开销,4 字节用于保存长度以及 4 填充字节)再加上保存值所需的内存。例如,一个含有 Nint 值的数组需要使用(24+4N)字节(会被填充为 8 的倍数),一个含有 Ndouble 值的数组需要使用(24+8N)字节。一个对象的数组就是一个对象的引用的数组,所以我们应该在对象所需的内存之外加上引用所需的内存。例如,一个含有 NDate 对象(请见表 1.2.12)的数组需要使用 24 字节(数组开销)加上 8N 字节(所有引用)加上每个对象的 32 字节,总共(24+40N)字节。二维数组是一个数组的数组(每个数组都是一个对象)。例如,一个 M×Ndouble 类型的二维数组需要使用 24 字节(数组的数组的开销)加上 8M 字节(所有元素数组的引用)加上 24M 字节(所有元素数组的开销)加上 8MN 字节(M 个长度为 Ndouble 类型的数组),总共((8MN+32M+24)8MN 字节;当数组元素是对象时计算方法类似,结果相同,用来保存充满指向数组对象的引用的数组以及所有这些对象本身。

算法(4th ed)(190):基础——算法分析 6.9.3

图 1.4.9 int 值、double 值、对象和数组的数组对内存的典型需求

评论

发布