java - 用新对象更新 ArrayList+删除旧对象

标签 java oop object

<分区>

我仍在学习 Java 的基础知识,并尝试在不同层面上理解该语言。我有一个关于在 Java 中创建/删除旧对象的问题。

我有一个例子:

假设我有 laptopList = new ArrayList<Laptop>;其中包含类 Laptop 的对象.我们有 20 个创建的对象,都添加到 ArrayList 中。现在我们想用一个新的 Laptop 对象更新第四个索引。在这种情况下,我们可以创建新的 Laptop 对象并使用 laptopList.set(4, new Laptop("Dell",1024)); .

在这一点上我想问你 -> 我们不会再使用那个旧实例了,但它仍然存在于内存中。我们是否应该将旧实例设置为 null值(或以其他方式删除它)?我知道对于 PC 来说这可能没有问题,但它对移动设备有什么影响(内存使用 => 电池放电更快)。

我知道在 Java 中实现了名为垃圾收集器的工具。它在这种情况下有效吗?它会立即删除非使用实例吗?它如何以及何时知道不再使用特定实例?

提前感谢您的回复和信息。

最佳答案

Java 的垃圾收集器将处理释放先前在索引 4 处的对象的内存,假设它可以被收集。如果您的代码的另一部分未引用它,则它应该是可收集的。 Java 会定期运行 java 收集器,因此没有理由自己运行它。

Java 支持垃圾收集器的多种实现,这些实现针对不同的情况进行了优化。默认垃圾收集器通常适用于大多数通用应用程序。

在移动应用程序中,运行在移动设备上的 JVM 应该默认使用针对移动环境优化的垃圾收集器。您可以在此处了解有关 java 垃圾收集的更多信息:https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html

关于java - 用新对象更新 ArrayList+删除旧对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54989127/

相关文章:

c++ - 如何成功创建一个创建对象并返回指向该对象的指针的函数?

object - 为什么我们不能在Kotlin的Singleton类(对象)中使用 protected 访问修饰符

python - User 类应该是不可变的吗?

java - 如何为 Google Cloud SQL 配置 Java Hibernate?

java - 在特定字符之前插入字符 Java

javascript - 以更简洁的方式声明 javascript 静态方法

ios - 如何在swift中通过泛型实现对象合并?

Java 整数流

java - 如何从Mysql数据库在android studio中检索带有图像的单行(id,name,..)?

c# - 从 MS Access OLE 对象列创建图像文件(使用 C# 或 VB.NET)