【问题标题】:Java out of memory message while reading large CSV file读取大型 CSV 文件时出现 Java 内存不足消息
【发布时间】:2016-09-03 13:46:42
【问题描述】:

我们正在尝试比较 2 个 3 GB 大小的 CSV 文件。 我们在尝试使用 CSV 地图阅读器读取这些文件时收到 java 堆内存错误。谁能帮我解决这个问题。

【问题讨论】:

  • 请提供您的代码
  • 如果您一次将 CSV 文件的全部内容读入内存,那么如果您没有足够的内存来存储内容,您可能会遇到错误。您是否尝试过阅读编写程序以一次读取每个文件一行并比较它们?还是将其写入存储文件中的 1 行并在整个其他文件中搜索该内容?

标签: java csv comparison large-files


【解决方案1】:

一种选择是为堆扩展内存。默认情况下,初始堆大小为 128 兆。 Java 有一个标志,你可以通过它来增加这个值。

您可以使用 -Xms[size] 初始化堆大小,也可以使用 -Xmx[size] 为 JVM 指定最大堆大小。

在您的情况下,我会使用 -Xms 为程序提供更多内存。例如,如果您希望堆大小以 512 MB 开始,那么在运行程序时您将运行:

java -Xms512m programName 

【讨论】:

  • 堆默认是主内存的 1/4,除非你运行的是 32 位 windows 版本。如果您需要处理 3 GB 的文件,您可能需要 2-4 x 这么大的堆来一次加载。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-27
  • 2023-04-09
  • 1970-01-01
  • 2011-09-18
  • 2011-12-14
  • 2017-10-03
相关资源
最近更新 更多