如何通过调用System.gc()来估计剩余内存量?
如何通过调用System.gc()来估计剩余内存量?
我有一些用以下步骤处理数据的代码:
- 读取尽可能多的数据放入内存(称其为“块”)
- 对块进行处理
- 将处理后的块写入磁盘
- 重复以上步骤
- ...
- 将所有处理过的块合并以获取最终答案。
在最后一个阶段,当块数越少时效率越高,因此我希望第一阶段读入尽可能多的数据放入内存。我可以通过查询Runtime.freeMemory()
来实现这一点。
然而,这意味着我需要调用System.gc()
,否则Runtime.freeMemory()
返回的数字将比我可以安全分配的内存要小得多。
我听说过很多权威人士说,显式地调用System.gc()
是一个不好的做法。 有没有办法可以避免这种情况?
admin 更改状态以发布 2023年5月24日