如何在Java中释放内存?

81 浏览
0 Comments

如何在Java中释放内存?

是否有一种类似于C语言的free()函数用于释放Java中的内存?或者将对象设置为null并依赖垃圾回收是唯一的选择吗?

admin 更改状态以发布 2023年5月25日
0
0 Comments

似乎没有人明确提到将对象引用设置为null,这是一种合法的释放内存的技术,你可能要考虑它。

例如,假设你在方法的开头声明了一个List,它增长到非常大的大小,但只需要到方法的一半。此时,你可以将List引用设置为null,以便在方法完成之前(并且引用已经超出作用域)让垃圾收集器有可能回收这个对象。

请注意,我在现实中很少使用这种技术,但在处理非常大的数据结构时值得考虑。

0
0 Comments

Java使用托管内存,所以你唯一可以分配内存的方法是使用new操作符,而唯一可以释放内存的方法是依赖垃圾回收器。

这个内存管理白皮书(PDF)或许有助于解释正在发生什么。

你也可以调用System.gc()建议垃圾回收器立即运行。然而,Java运行时做出最终决定,而不是你的代码。

根据Java文档

调用gc方法建议Java虚拟机
花费努力回收未使用的对象,
以便使它们目前所占用的内存
可供快速重用。当方法调用返回时,
Java虚拟机已经尽最大努力回收所有废弃对象所占用的空间。

该内容为空,因为它位于一个HTML块引用标记中。

0