我知道有很多类似的问题,我已经阅读过每一个'em (至少我相信)而且我无法用 java来解决我的问题.lang.OutOfMemoryError:Java堆空间。让我来描述我的问题。
我正在研究一个查询数据库并生成CSV文件的简单Java程序。
一切都很好,我能够为包含大量数据和大约 320 + 列的查询生成CSV文件。
过了一段时间后,我遇到了这个问题,我在那里查询了一个完全 309 列的表格。
查询类似于此SELECT * FROM TABLE_A
。它没有行。因此查询将返回0条记录。
理想情况下,这应该创建一个空文件,这对于我尝试的所有其他查询都会发生,除了这个我收到此错误并且控制台指向此行执行executeQuery
的查询。即使表中有数据,我也会得到同样的错误。
只有当我明确地将堆大小增加到 3gb 时才生成CSV,而对于其他人,它使用默认堆大小。 (不知道为什么它需要这么多的堆空间用于包含0条记录的表)
对于默认堆大小,只有当我的列数较少(例如 100-150 列)时才能成功生成此特定报告。
为什么单独出现内存不足的问题?这张桌子有什么关系吗?据我所知,该表与所有其他表类似。是不是因为这张表的列大小?对于大多数列,我的 255 作为列大小。
我花了2-3天的时间来分析为什么会这样,没有运气。
有人可以帮我解决这个问题吗?我认为这与其他任何内存不足问题都不相似。它有点怪异。