我正在生成一个大型数据结构并将其写入硬盘.之后我想摆脱对象,减少内存消耗.我的问题是,在我强制进行垃圾收集后,使用的内存量至少与垃圾收集前一样高.我添加了一个最小的工作示例,我正在做什么.
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();
}
Run Code Online (Sandbox Code Playgroud)
代码应强制对数据对象进行垃圾收集,因为它在线程中是推荐的:
强制Java中的垃圾收集?
我知道这个垃圾收集确实保证了数据对象的删除,但是在过去我通过使用链接中描述的垃圾收集使用简单的System.gc()更成功.
也许有人有一个答案,它是摆脱大型物体的最佳方式.