java - 如何在不增加 eclipse 上堆大小的情况下避免内存不足异常

标签 java memory out-of-memory heap-memory

我有一个代码,可以从文件中读取大量数据并将其写入 Excel 文件。我面临的问题是,当数据超出堆大小的限制时,它会抛出内存不足异常。我尝试增加堆大小,程序运行正常。但问题是,我的机器上的 RAM 有限,如果我将巨大的空间分配给堆,机器就会变得非常慢。那么,有什么方法可以在处理一定限制的数据后释放内存,这样我就不需要增加堆大小来运行我的代码了?我对这类东西比较陌生,所以请提出一些想法

最佳答案

在这种情况下,您需要重组代码,以便它可以处理小数据 block 。创建一个小缓冲区,将数据读入其中,对其进行处理并将其写入 Excel 文件。然后继续下一次迭代,读入相同的缓冲区。

当然,您使用的 Excel 库需要能够像这样工作,并且不需要一次性写入整个文件。

关于java - 如何在不增加 eclipse 上堆大小的情况下避免内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10444130/

相关文章:

java - 获取 SQLite android 的特定行

ruby - 使用交换时进程退出时出现 Errno::ENOMEM

java - 在 Java 中根据可用内存管理线程数

.net - 我可以在 .NET 应用程序的地址空间中重新排列 dll 镜像,以腾出更多连续的可用空间吗?

java - OutOfMemoryError 使用 FirebaseRecyclerViewAdapter

java - 如何获得 "sbt universal:packageBin"的分解版本?

java - Google drive rest API,仅从根文件夹下载文件

java - 如何到达在 Java 中实现 Runnable 的对象的方法?

ruby - 如何使用非常大的 Ruby 哈希减少内存使用量?

java - 在 Java 中解析没有 DOM 的高度嵌套 XML