我正在为一个大文件(~30GB)实现一个外部排序,所以在我将这些块写入磁盘之后,我创建了chunks
. 但是我得到一个BufferedReader(new OutputStreamWriter(new FileOutputStream(outputPath), "UTF-8"), maxBufferSize)
maxBufferSize = Runtime.getRuntime().freeMemory() / chunks
OutOfMemory
例外。
我猜垃圾收集器没有足够的时间来清理内存(当我停止调试器时它不会抛出异常),但在这种情况下,为什么Runtime.getRuntime().freeMemory()
会给出这个结果?
是否可以显式调用垃圾收集,或者唯一的选择是让进程休眠一段时间?