从内存中删除ArrayList对象

3

我有一堆对象在 ArrayList 中,如果我调用 ArrayList.remove(object),我需要做任何其他事情来从内存中删除该对象吗?我正在以相当快的速度向该列表添加和删除对象,因此,如果它没有从内存中删除,它将开始占用空间并开始减慢游戏的速度。

5个回答

5

- 当你调用 ArrayList.remove(object) 时,你只是从 List 中删除对象而不是从内存中删除。

- 决定何时从堆中删除对象取决于 Garbage Collector,在正常情况下,当一个对象没有引用时,它准备进行垃圾回收。

- 有一个经典的例子说明为什么 Java 中的对象 String 不应该用于存储密码,而应该使用 char[]

请查看此链接...

为什么 char[] 优于 String 存储密码?


1

1
不,只要那是唯一引用该对象的地方,你就不需要做任何其他事情。欢迎来到垃圾回收语言的乐趣!当Java决定需要回收一些内存时,它会清理旧的、未被引用的对象。

1

如果您能快速地通过堆栈,您可以使用一些JVM参数来推动GC...我们有一个每天处理数十亿次操作的应用程序,并且已经使用人体工程学GC设置进行了大量调整。我鼓励您尝试自适应大小策略和最大暂停设置。运行程序时,请使用分析器对ArrayList进行正常操作(几分钟),并查看各个堆代的环境状态。您可能还需要调整内存分配到代


0
ArrayList.remove从数组中删除对象,如果该对象没有被其他对象引用,则GC将删除该对象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接