![]() |
1
8
是的,如果集合是最后一个引用这些对象的位置,则在从集合中移除这些对象后,它们就可以进行垃圾收集。不,你不能强行摧毁这些物体。垃圾收集器会在感觉到的时候处理它们。 |
![]() |
2
2
如果没有其他对象引用,那么将来某个时候将对该对象进行垃圾收集。 你不应该强迫销毁这些物品。如果它们是非常重的对象(或者您的内存中容纳的对象太多),那么这就指出了您的代码的一个更基本的问题。
如果你真的必须,那么你可以打电话给
|
![]() |
3
2
一般来说,当一个对象被特定地销毁时,您没有很强的控制权。当没有对任何对象的(强)引用时,任何对象都有资格进行垃圾收集—但不能保证何时将进行垃圾收集,或者实际上是否将进行垃圾收集。甚至呼叫 System.gc() 或 Runtime.gc() 不保证实际执行任何操作,这只是对JVM的一个提示,它现在可能要考虑垃圾收集。我相信您得到的唯一保证是,如果抛出OutOfMemoryError,那么所有可能的垃圾收集都是在抛出错误之前完成的。
这里有处理敏感信息(如密码)的含义。由于不能通过编程清除字符串,因此理想情况下您不希望这样存储密码。如果将其存储为字符数组,则可以使用
回到主题上——如果对象没有在其他地方被引用,那么这两个操作都将使其符合垃圾收集的条件,这是正确的。collection.clear()实际上是一次删除对集合中所有对象的引用的最快方法。 |
![]() |
4
2
注意 WeakHashMap 允许您将对象放在其中,并让它们在映射外部不再有对键(而不是值)的引用时可以进行垃圾收集—此时映射条目将消失。 一般来说,你不应该担心 什么时候? 对象是垃圾收集的——JVM决定了这一点,它比您更了解它的内存需求和可能的延迟。你什么 应该 担心的是确保你不再需要的物品是 合格的 用于垃圾收集。 |
![]() |
5
1
要收集真正的垃圾,不能有对对象的强引用。对象与 weakReference's 可能是 garbage collected . 使用weakhashmap确保它们被垃圾收集,因为在hashmap中仍然存在对对象的引用。 |
![]() |
6
0
您可以在清除映射后启动对System.gc()的调用,但这通常不是一个好主意。 |
![]() |
Giffyguy · 如何限制在构造向量后调用'resize()'? 3 年前 |
![]() |
vytaute · 返回表类型时Oracle函数中的类型错误 3 年前 |
![]() |
bbgghh · 在scala中连接两个列表时如何处理不匹配的键 3 年前 |
![]() |
dev-chicco · Laravel系列寻找常见物品 3 年前 |
![]() |
Mitch · Laravel-雄辩的单品合并系列 7 年前 |
![]() |
Kieran · 为什么类X可以从集合继承<X> 7 年前 |
![]() |
John · 如何在不返回集合本身的情况下返回集合的数据? 7 年前 |
![]() |
Niklas Mertsch · 在泛型集合中实现移除(对象o) 7 年前 |