java.lang.OutOfMemoryError:executeQuery

时间:2015-09-17 15:03:57

标签: java sql csv out-of-memory heap-memory

我知道有很多类似的问题,我已经阅读过每一个'em (至少我相信)而且我无法用 java来解决我的问题.lang.OutOfMemoryError:Java堆空间。让我来描述我的问题。

我正在研究一个查询数据库并生成CSV文件的简单Java程序。

一切都很好,我能够为包含大量数据和大约 320 + 列的查询生成CSV文件。

过了一段时间后,我遇到了这个问题,我在那里查询了一个完全 309 列的表格。

查询类似于此SELECT * FROM TABLE_A。它没有行。因此查询将返回0条记录。

理想情况下,这应该创建一个空文件,这对于我尝试的所有其他查询都会发生,除了这个我收到此错误并且控制台指向此行执行executeQuery的查询。即使表中有数据,我也会得到同样的错误。

只有当我明确地将堆大小增加到 3gb 时才生成CSV,而对于其他人,它使用默认堆大小。 (不知道为什么它需要这么多的堆空间用于包含0条记录的表)

对于默认堆大小,只有当我的列数较少(例如 100-150 列)时才能成功生成此特定报告。

为什么单独出现内存不足的问题?这张桌子有什么关系吗?据我所知,该表与所有其他表类似。是不是因为这张表的列大小?对于大多数列,我的 255 作为列大小。

我花了2-3天的时间来分析为什么会这样,没有运气。

有人可以帮我解决这个问题吗?我认为这与其他任何内存不足问题都不相似。它有点怪异。

0 个答案:

没有答案