我在ArrayList
中有一堆对象,如果我调用ArrayList.remove(object)
我还需要做其他事情来从内存中删除对象吗?我正在以相当快的速度添加和删除此列表中的对象,因此如果它没有从内存中删除,它将开始占用空间并开始放慢游戏速度。
答案 0 :(得分:5)
- 当您致电ArrayList.remove(object)
时,您只需从List
Not Not the Memory 中删除对象。
- 这将取决于Garbage Collector
决定何时从堆中删除对象,在正常情况下,它的对象已准备好进行垃圾回收,因为它具有暂不提及。
- 有一个典型的例子说明为什么String
是Java 中的对象不应该用于存储密码而应char[]
使用。
请参阅此链接...
答案 1 :(得分:1)
Java会自动进行垃圾回收。因此,一旦不再引用某个对象,就可以删除 ,这并不意味着它将被删除。垃圾收集是自动的,你可以通过调用System.gc()来要求它完成,但这只是一个运行它的消息。
http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/System.html#gc%28%29
答案 2 :(得分:1)
不,你不必做任何其他事情,只要这是唯一引用该对象的地方。欢迎来到垃圾收集语言的乐趣!当Java决定需要回收一些内存时,它会清理旧的,未引用的对象。
答案 3 :(得分:1)
如果你足够快地咀嚼堆,你可以轻轻推动gc以及一些jvm args ...我们有一个应用程序,每天处理数十亿次操作,并使用ergonomic gc settings I'大量调整它d鼓励您主要使用自适应大小策略和最大暂停设置。像往常一样运行arraylist的探查器运行程序一段时间(几分钟),看看各代堆的环境状态如何。您最终还必须调整memory allocations to generations。
答案 4 :(得分:0)
ArrayList.remove从数组中删除对象,然后如果该对象未被任何其他对象引用,则GC将删除该对象。