在java中删除未使用的变量的内存

2022-09-01 00:28:48

我知道Java有自己的垃圾回收,但有时我想手动删除垃圾。有没有办法做这样的工作?考虑到我有一个很长或很长的声明许多变量,这是一个好主意,在使用后立即删除未使用的内存,而不是在函数结束时自动收集?如果我手动删除垃圾,是否会影响应用程序的速度?感谢您的帮助!function


答案 1

在java中没有直接和直接的方法来释放内存。您可以尝试说服垃圾回收器使用众所周知的以下内容带走一些对象:

Object obj = new Object();
// use obj
obj = null;
System.gc();

但不能保证这实际上会立即释放内存。

虽然这适用于堆内存,但堆栈分配的项只能在函数返回时释放。


答案 2

为什么要“手动”删除垃圾?如果是因为内存不足,回想一下,Java将在实际抛出之前运行垃圾回收。如果您真的内存不足,那么即使您也无法手动删除垃圾。OutOfMemoryError

声明变量不会在堆上分配内存。用 do 制作对象。JVM 甚至可以对 GC 对象引用进行转义分析,这些引用尚未超出范围,但在方法结束之前不再使用。new

如果您的意思是您主动希望在系统资源不重要的某个时刻释放内存,那么请使用更好的JVM调优,例如使用并行GC算法。

通过将事情设置为“手动”垃圾收集可能会减慢速度,如果只是因为您毫无意义地支付了清空引用的成本,或者调用GC的次数超过需要的次数。null