【发布时间】:2012-12-13 22:02:42
【问题描述】:
我正在读取一个大小为 2.6GB 的 XML 文件——JVM 的大小为 6GB。
但是我仍然收到 Heap Space out of memory 错误?
我在这里做错了什么......
作为参考,我输出了JVM的最大内存和空闲内存属性--
最大内存显示为大约 5.6GB,但可用内存显示为只有 90MB...为什么只有 90MB 显示为空闲,尤其是。当我什至还没有开始任何处理时......我刚刚启动了程序?
【问题讨论】:
-
您使用的是什么操作系统?有些对一个进程可以消耗多少内存有限制……我相信 32 位窗口最大为 2gb。
-
2.6GB XML - 天哪!使用数据库!!由于所有节点对象、子列表、属性对象等,将 XML 文件存储在内存中将比磁盘上的平面文件使用更多的空间。
-
@jlordo - 使用 SAX 或 DOM 读取 XML 文件可能是非常合适的做法。根据需求,数据库实际上可能是最差可能的解决方案。恕我直言...
-
@paulsm4 我同意,它可以完全合适。 2.6GB 的 XML 永远不适合 DOM 表示,并且仅在少数情况下适合 SAX。由于内存消耗、查询和操作机会以及访问速度,在这种数据量下,数据库是一个不错的选择。
标签: java memory-management memory-leaks heap-memory