在 Java 中,在代码中的某个时刻,我想释放一个巨大HashMap<Integer, ArrayList<Integer>>
对象占用的内存。是否足以将其指向null
如下:
Map<Integer, ArrayList<Integer>> complexObject = new HashMap<Integer, ArrayList<Integer>>(1000000);
...
complexObject = null;
?
在 Java 中,在代码中的某个时刻,我想释放一个巨大HashMap<Integer, ArrayList<Integer>>
对象占用的内存。是否足以将其指向null
如下:
Map<Integer, ArrayList<Integer>> complexObject = new HashMap<Integer, ArrayList<Integer>>(1000000);
...
complexObject = null;
?
您不能显式取消分配 Java 对象。但您可以执行以下操作:
null
.System.gc()
“建议”到 JVM 以运行垃圾收集器,这会释放不再使用的对象,但不能保证调用此方法会实际运行垃圾收集器。如果在任何地方确实没有对所述对象的引用,则将其引用设置为 null 将在下次决定运行时将其标记为可用于垃圾收集器。然而,当 GC 决定运行时,并不是一成不变的。
这是Java与C不同的一个重要点,但不要担心。99.9% 的时间您可以相信 GC 会为您提供支持。
不能保证释放内存。GC 将运行并拾取空值,所以这就是你所能做的。
我刚读了这篇文章,里面也有关于释放内存的内容。看看吧,归零并不总是对你有帮助。