从内存中删除ArrayList对象

时间:2012-12-24 02:34:26

标签: java

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

5 个答案:

答案 0 :(得分:5)

- 当您致电ArrayList.remove(object)时,您只需从List Not Not the Memory 中删除对象。

- 这将取决于Garbage Collector决定何时从堆中删除对象,在正常情况下,它的对象已准备好进行垃圾回收,因为它具有暂不提及。

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

请参阅此链接...

Why is char[] preferred over String for passwords?

答案 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将删除该对象。