用分配的8G堆大小

时间:2016-07-17 01:21:55

标签: java eclipse memory xml-parsing out-of-memory

我有一个1.5G的xml文件,我使用了一个DOM java解析器(抛出这个问题后我知道DOM不是一个很好的大数据工具,而我仍然对下面的问题感到好奇)。我的问题是“OutOfMemoryError:Java堆空间”,基于已经存在的答案,我将eclipse.ini -xms和-xmx大小都更改为8096m,并在eclispe窗口中显示堆状态以监控堆大小有多少用过的。当我运行这段代码时,它只是使用“80m / 8096m”然后抛出“out memory”错误,我想知道为什么有明显的空间未使用,即“8096m - 80m”,但仍然会出现内存不足。

1 个答案:

答案 0 :(得分:0)

  

我想知道为什么显然没有使用大空间,即“8096m - 80m”,但仍然会出现内存不足。

你误解了一些 1 。而且(IMO)最有可能认为您将IDE(Eclipse)使用的内存与用于运行应用程序的内存混淆。

除非您正在做一些奇怪的(并且不建议),否则您的应用程序将在一个单独的JVM中运行,其堆参数独立于IDE堆参数。不出所料(对我而言)实际上Eclipse IDE进程的内存使用量很小......因为那不是应用程序运行的地方。

调整Eclipse的堆参数对应用程序JVM堆参数没有任何影响!您实际需要做的是在应用程序的Eclipse启动程序配置中设置堆参数。在Eclipse中。或者,从命令提示符手动启动应用程序。

但在这种情况下,我怀疑它会起作用。如果你可以将一个1.5 GB的XML文件表示为8GB Java堆中的DOM,那么我会非常惊讶。这种表现形式的开销太大了。

1 - 如果Eclipse IDE本身内存不足,那将会非常缓慢,然后崩溃。到过那里。看到了。如果您正在开发或检查非常大的代码库,通常会发生这种情况。