java - 指向新引用的 ArrayList 会调用 GC

标签 java android arraylist garbage-collection

<分区>

如果我有一个包含多个元素的 ArrayList,并且我想清除所有元素,我应该:

  • 将它指向一个新的引用?这会调用 GC 吗?在 Android 中调用 GC 不是很好。
  • 调用 arraylist.clear()。 clear 本身是否调用 GC 来释放内存?

如果 arraylist 真的很大怎么办?我认为当 arraylist 很大时,clear 的性能很差。所以最好指向一个新的引用并让 GC 完成它的工作?

最佳答案

point it to a new reference? Will this call the GC? In Android calling the GC is not so good.

不会的。通常当没有足够的内存用于新对象分配时执行 GC。

call arraylist.clear(). Does clear itself call the GC to free the memory?

还是不行。清除列表将删除列表对元素的引用,仅此而已。实际的 GC 将在需要时执行。

What about if the arraylist is really huge? I think clear has bad performance when the arraylist is huge. So it is better to point to a new reference and just let the GC do its work?

clear() 的时间复杂度为 O(n)。指向另一个数组列表的引用是 O(1)。所以是的,它更快,但我从未在现实世界的应用程序中看到过。

关于java - 指向新引用的 ArrayList 会调用 GC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30849385/

相关文章:

java - 谷歌应用引擎 Java 应用的版本控制忽略列表

java - 使用java将html转换为xml

java - 如何修改数组列表中的元素

java - 尝试运行多个线程时,空指针异常导致强制关闭

Android - 是否在 onCreate() 之后立即调用 onStart()?

java - 在 JSP 中无法获取 ArrayList 的正确大小

java - ArrayList 内的 ArrayList - 访问值时出现问题

java - Spring Boot 错误 : java. lang.NoClassDefFoundError: org/springframework/util/Assert

java - 当我运行简单的 android studio 应用程序时,它崩溃了。它没有错误

android - Android SQLite数据库的编写方法