java - 当我从 Java 中的 ArrayList 中删除 1 个对象时。接下来会发生什么?

标签 java arraylist memory-management reference internal

我有一个像这样的简单数组列表: ..

ArrayList<SP> sps = new ArrayList<SP>();
sps.add(new SP("1"));
sps.add(new SP("2"));
sps.add(new SP("3"));

.. 当我从该列表中删除 1 个对象时。 接下来会发生什么? 该列表只是删除该对象的引用 然后对象自动释放该内存区域 (因为没有引用该对象的内存) 或者 该对象被该列表直接从该内存区域释放了?

P/s:抱歉我的英语不好。

最佳答案

如果您调用 ArrayList.remove()给定索引处的元素从列表中删除(并且它后面的所有元素都向下移动一个索引)。对象本身仍然存在,尚未释放任何内存。

如果从列表中删除该对象后,您的应用程序中没有对该对象的剩余引用 - 这意味着它现在未被您的程序使用 - Garbage Collector将自动释放与该对象关联的内存,以便可以重复使用。

关于java - 当我从 Java 中的 ArrayList 中删除 1 个对象时。接下来会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42453913/

相关文章:

java - 在 ArrayList 中搜索对象

java - 检查 ArrayList<> 是否包含对象不起作用

objective-c - 我应该释放我创建的NSThread吗?

cocoa - 你曾经使用过 NSZoneMalloc() 而不是 malloc() 吗?

java - "Unfortunately My App has stopped"

java - JPanel "Loop"/按钮被 "panel.removeAll();"重复?

java - 在 Java 中将整数转换为整数

java - 在java的构造函数中创建的未分配对象的生命周期是多少?

Android,如何合并两个自定义的ArrayList?

java - Android 处理 App 的关闭