【发布时间】:2010-11-11 23:05:14
【问题描述】:
我有一些使用以下配方的数据处理代码:
- 尽可能多地读入内存中的数据(称之为“块”)
- 对块执行处理
- 将处理后的块写入磁盘
- 重复
- ...
- 合并所有已处理的块以获得最终答案。
当块尽可能少时,最后一个阶段效率最高,因此我希望第一阶段读入尽可能多的数据以适合内存。我可以通过查询Runtime.freeMemory()来做到这一点。
但是,这意味着我需要调用System.gc(),或者Runtime.freeMemory() 返回的数字远小于我可以安全分配的内存量。
我听过一些权威人士说,明确地打电话给System.gc() 是个坏主意。有什么办法可以避免这种情况吗?
【问题讨论】:
标签: java memory-management garbage-collection