2012-07-05 71 views
-4

我在LSI上运行代码,它需要先从数据库中提取大量数据。对于小型数据集,它工作正常。因为我增加了数据集,它给了我以下错误。处理大型数据集时出现内存不足错误

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 

我目前正在运行系统上的代码有2 GB的RAM。错误是与RAM容量还是由于其他原因有关。

谢谢!

+0

您的意思是添加Java代码,而不是.NET的? –

+0

的JBoss也可能! – c0deNinja

+0

是否http://www.jguru.com/faq /view.jsp?EID=1300058回答你的问题? – reuben

回答

1

当您运行Java时,您必须传递VM参数以满足您的特定问题。启动您的应用时

-Xms40m - minimum heap size in MB 
-Xmx1024m - maximum heap size in MB 

的java test.java -Xms40m -Xmx1024m

: 你需要增加堆值。欲了解更多信息,请参阅Oracle documentation。或者如果你使用Eclipse在ecliplse.ini文件中增加这个大小。

0

如果它与你的RAM相关,你的处理器将停止Java。所以绝对不是。其原因是java堆内存已满并且堆空间中的所有对象都处于活动状态,因此无法执行垃圾收集过程。所以堆空间中没有足够的内存来处理更多的数据。 Bcoz的这个原因你会得到这个错误。

0

除了增加您的应用程序可以拥有的最大堆大小(可能是您所需要做的),它听起来像您可能能够显着减少您正在使用的内存量。如果您正在为文档编制索引,则在标准LSI设置中,您应该一次只能将1个文档加载到内存中。所以说,你有一个文件列表,你循环的列表和:加载,索引,关闭。冲洗并重复。

我想这可能是你的问题,因为你的代码适用于较小的数据集。另一种可能性是,当您扩展数据集时,您将包含一些耗尽所有堆空间的巨大文档。在这种情况下,最简单的解决方案就是增加堆空间。

1

首先检查您分配给您的服务器的堆空间大小。如果它似乎低,那么你可以通过下面的参数提高了 -

-Xms128m - minimum heap size in MB 
-Xmx1024m - maximum heap size in MB 

一般来说,我们得到这个异常,当可用熟知尺寸变满,没有内存可供程序正常运行。

0
  1. -Xmx为最大堆尺寸,
  2. -Xms为初始堆尺寸,

重要的一点是两者的语法以上是大小写敏感的。所以小心点。

如何在Tomcat中设置java堆大小? 停止Tomcat服务器,设置环境变量CATALINA_OPTS,然后重新启动Tomcat。查看文件tomcat-install/bin/catalina.sh或catalina.bat了解如何使用此变量。例如,

集CATALINA_OPTS = -Xms512m -Xmx512m(Windows中,没有 “” 围绕价值) 出口CATALINA_OPTS = “ - Xms512m -Xmx512m”(KSH/bash的 “” 围绕价值) SETENV CATALINA_OPTS“ - “xms512m -Xmx512m”(tcsh/csh,“”值附近)

在catalina.bat或catallina.sh中,您可能已经注意到可以使用CATALINA_OPTS,JAVA_OPTS或二者来指定Tomcat JVM选项。 CATALINA_OPTS和JAVA_OPTS有什么区别?名称CATALINA_OPTS特定于Tomcat servlet容器,而JAVA_OPTS可以被其他Java应用程序 (例如JBoss)使用。由于环境变量由所有应用程序共享,因此我们不希望Tomcat无意中选取用于其他应用程序的JVM选项。我更喜欢使用CATALINA_OPTS。

如何在JBoss中设置java堆大小?

停止JBoss服务器,编辑$ JBOSS_HOME/bin/run.conf,然后重新启动JBoss服务器。您可以使用JAVA_OPTS行更改为类似:

JAVA_OPTS = “ - 服务器-Xms128m -Xmx128m”

如何在Eclipse的Java堆大小? 您有2个选项: 1.编辑eclipse-home/eclipse.ini,如下所示,然后重新启动Eclipse。

-vmargs-Xms64m-Xmx256m2。或者,您可以在最后使用附加选项运行eclipse命令。 -vmargs之后的任何内容都将被视为JVM选项并直接传递给JVM。以这种方式在命令行中指定的JVM选项将始终覆盖eclipse.ini中的那些选项。 例如,

日食-vmargs -Xms64m -Xmx256m

如何设置Java堆大小在NetBeans? 退出NetBeans,编辑文件netbeans-install/etc/netbeans.conf。例如,

netbeans_default_options =“ - J-Xms512m -J-Xmx512m -J-XX:PermSize =32米-J-XX:MaxPermSize参数=128米-J-Xverify:无

如果您疑问请参考下面的链接。感谢他们provinding细节。

enter link description here

相关问题