【问题标题】:Java app hangs after reading data from 90k+ files to be written to excelJava 应用程序在从 90k+ 文件中读取数据后挂起并写入 excel
【发布时间】:2012-12-01 00:01:25
【问题描述】:

我正在开展一个项目,以从大量机器生成的文件(100k+ 总计 15gig)中提取一些数据,以 excel (2003) 每行一个文件。在将每行提取的每个文件的数据写入excel(使用JExcel API)之前,我将内存中的所有文件加载到数组列表中。

一切正常,直到大约 90k 文件被读取并写入打开的工作簿,然后它停止工作。

在读取和提取所有文件后,我执行 workbook.write() 和 workbook.close(),因为当磁盘“挂起”时,不会将任何内容写入磁盘上的实际文件。

没有错误被抛出。有关解决此问题的任何想法。非常感谢。

【问题讨论】:

  • 如果您需要帮助,您确实需要发布一些代码。你试过调试器吗?
  • 你看过机器的性能了吗?您是否正在分页到磁盘(例如,VM 没有内存不足,但您的 RAM 已满?)。
  • 顺便说一句,你为什么不一边读一边写出工作簿?如果您阅读所有内容,但就像您说的那样,应用程序在 90% 的地方都失败了,至少您最终会得到 90k 个工作簿,而不是每次都必须从头开始。
  • 为什么要加载整个文件而不是一次读取一行?您所做的只是浪费内存并增加延迟。
  • @John3136 该应用程序非常适合较小的文件集(

标签: java


【解决方案1】:

有两个可能的问题:

  1. Java 或 Excel 内存不足
    • 您可以通过在读取每个文件时写入工作簿来解决此问题,而不是将它们全部存储在内存中
  2. Excel 行数不足
    • 如果是这样的话,基本上你也无能为力了……

为什么它需要直接进入 Excel?您最好将整个内容直接写入CSV 文件,Excel 知道如何以本机方式打开...

【讨论】:

  • 非常感谢@durron597,我调查了这两个问题,结果发现 excel 可能已经用完了行...不过我已经切换到 CSV,现在一切正常;)谢谢。
猜你喜欢
  • 1970-01-01
  • 2021-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-18
  • 1970-01-01
  • 2019-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多