如何在没有System.gc()
的情况下将对象及其所有数据结构使用的内存回收到我的应用程序内存中,只有建议而不是必须执行记忆检查。这还包括finalize
等方法。
换句话说,假设我有一个HashMap
,我希望它存储的所有数据都从内存中删除。我通常用clean
方法清理这种类型的集合,或者将它附加到null
但是这似乎没有将内存空间返回给应用程序?
的编辑 :
让我们说以下内容:
TIntObjectHashMap<byte[]> map=new TIntObjectHashMap<byte[]>();
//fill the map with 20GB
map.clear();
//Or map=null;
20GB不应该免费吗?这是个问题。
答案 0 :(得分:9)
基本上,你不能。绝对强制垃圾收集你无能为力,你当然也无法手动删除对象。
学会爱和信任垃圾收集器。
答案 1 :(得分:2)
你不能强制垃圾收集,你唯一能做的就是调用System.gc()
方法,但它只是对垃圾收集器的一个提示,它不会强制它进行收集