【发布时间】:2014-07-12 23:07:26
【问题描述】:
假设我有这个代码:
DataStructure hugeData = Data.readLotsOfStuff(); // like gigabytes
DataStructure processedData = processData(hugeData);
// now I don't need hugeData, so
hugeData = null;
System.gc();
像这样显式释放内存是个好习惯吗?
【问题讨论】:
-
这被认为是一种不好的做法。如果需要由无法访问的对象保留的内存,则无论如何都会运行垃圾收集器。此外,当它不能保证时(尽最大努力释放无法访问的内存)
-
当您不再需要引用时将指针设置为 null 是一种很好的做法(尽管很少需要使用局部变量引用,只有类静态成员和实例成员)。显式调用垃圾收集器不是。
标签: java memory memory-management garbage-collection