从内存中删除ArrayList对象

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

当您调用ArrayList.remove(object) ,只需从List Not中删除内存中的对象。

它将依赖于Garbage Collector来决定它何时从堆中删除对象,在正常情况下它的对象已准备好进行垃圾收集,因为它已经没有对它的引用了。

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

看到这个链接……

为什么char []比字符串更适合密码?

Java会自动进行垃圾回收。 因此,一旦不再引用对象,就可以将其删除,这并不意味着它将被删除。 垃圾收集是自动的,你可以通过调用System.gc()来要求它完成,但这只是一个运行它的消息。

http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/System.html#gc%28%29

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

如果你足够快地咀嚼堆,你可以轻轻推动gc以及一些jvm args …我们有一个应用程序,每天处理数十亿次操作并使用符合人体工程学的gc设置调整它我鼓励你玩使用自适应大小策略,主要是最大暂停设置。 像往常一样运行arraylist的探查器运行程序一段时间(几分钟),看看各代堆的环境状态如何。 您可能最终还必须将内存分配调整为几代 。

ArrayList.remove从数组中删除对象,然后如果该对象未被任何其他对象引用,则GC将删除该对象。