我正在生成一个大型数据结构并将其写入硬盘。之后我想摆脱对象,以减少内存消耗。我的问题是,在我强制进行垃圾回收之后,已使用的内存量至少与垃圾回收之前一样高。我添加了一个最小的工作示例我正在做什么。
DataStructure data = new DateStructure();
data.generateStructure(pathToData);
Writer.writeData(data);
WeakReference<Object> ref = new WeakReference<Object>(data);
data = null;
while (ref.get() != null) {
System.gc();
}
代码应该按照线程中的建议强制对数据对象进行垃圾收集:
Java 中强制垃圾收集?
我知道这个垃圾收集确实保证了数据对象的删除,但在过去,我通过使用链接中描述的垃圾收集更成功,就像使用简单的 System.gc()。
也许有人有一个答案,什么是摆脱大物体的最佳方法。