【发布时间】:2013-12-04 16:07:20
【问题描述】:
在我的计算机科学课程中,我们被告知当你创建一个数组时,JVM 会根据数组的大小自动分配内存。例如,如果您创建一个大小为 10 的整数数组,JVM 会为该数组分配 10 * 32 位的数据。
我的问题是,当您创建具有不同大小的对象数组时,这个过程究竟是如何工作的?例如一个字符串对象。当你创建一个包含 10 个字符串的数组时,系统上是否真的为这些字符串保留了内存,或者因为它们只是指针,所以不需要内存分配?
【问题讨论】:
-
您实际上构建了一个指针数组,这是正确的。所以你需要 sizeof(pointer) * array_size。将要链接到数组索引的对象实例化需要注意对象的实际内存分配。
-
这个问题几乎可以回答你的问题stackoverflow.com/questions/5564423/…
-
实际上,在 Java 中,只有一种类型的对象具有可变大小:数组。其他所有内容都有预先确定的大小(String 在内部保存一个数组)。