ArrayList 的内存分配如何工作?
据我所知,当我们创建一个:ArrayList
ArrayList<String> list = new ArrayList<String>(SIZE);
JVM 为其保留了内存的连续部分。当我们将新元素添加到列表中时,当元素数量达到其中的75%时,它会保留内存中新的连续部分并复制所有元素。SIZE
我们的名单越来越大。我们正在添加新对象,并且必须再次重建列表。
现在会发生什么?
JVM 正在寻找连续的内存段,但它找不到足够的空间。
垃圾回收器可以尝试删除一些未使用的引用并对内存进行碎片整理。如果 JVM 在此过程之后无法为新的列表实例保留空间,会发生什么情况?
它是否使用最大可能的段创建一个新段?哪个会被抛出?Exception
我读了这个问题Java:ArrayList如何管理内存,其中一个答案是:
引用不会占用太多空间。但无论如何,使用了一些空间。当数组越来越大时,这可能是一个问题。我们也不能忘记,我们还有另一个使用内存空间的东西。