您的位置:首页 > 编程语言 > Java开发

java.lang.OutOfMemoryError: Java heap space

2014-11-14 15:31 417 查看
一:起因

(1)学习IT的人,不论是写前端还是后台;有时候需要对数据进行清洗处理,例如,数据库日志分析。

(2)处理数据的大小由MB 到 GB,在到TB,最后导致处理的每一个文件都超过java jvm初始的heap

(3)对于单个文件比较小的,并行要求不高的数据,我们可以通过更改JVM的初始参数进行解决 —— 但是这并不是根本的解决办法。

(4)根本的解决办法是hadoop分布式系统下的MapReduce

二:下面是针对(3)的处理办法

(1)引起java.lang.OutOfMemoryError: Java heap space异常,可能是由JAVA的堆栈设置太小的原因

a: 若Eclipse 报 “Exception in thread "main" java.lang.OutOfMemoryError: Java heap space ”错误,可通过一下方法进行处理:首先, 打开Eclipse软件,选择菜单栏run,在二

级菜单中选择 Debug Configurations,然后:在弹出的窗口中选择(x)=arguments选项卡,VM arguments中输入所需要的内存最大占用量,比如输入-Xmx800m即可。

b: myeclipse中console输出控制台,输出限定大小,可通过windows—Run/Debug—Console中的Console buffer size大小进行修改,这样可以使得console的空间变成size大小。

将java处理过的内容输出到一文本文件中,使用换行,不是"\n",而是"\r\n'(但是我用的“\n”貌似也没有事情的)

c: 【附】MyEclipse的设置地址在run--->Open Run Dialog--->Arguments

(2)在D:/apache-tomcat-6.0.18/bin/catalina.bat最前面加入:set JAVA_OPTS=-Xms128m -Xmx512m

注意:只有startup.bat启动tomcat,设置才能生效,如果利用windows的系统服务启动tomcat服务,上面的设置就不生效了,

就是说set JAVA_OPTS=-Xms128m -Xmx512m没起作用

因为eclipse里默认的一个程序的jvm配置为:-Xms128m -Xmx512m,所以我们的处理耗内存比较大时需要手动调整一下,以便不会内存溢出。具体的设置方法为:  

  选中被运行的类,点击菜单‘run->run...’,选择(x)=Argument标签页下的vm arguments框里输入 -Xmx512m, 保存运行就ok了  

  在你的TOMCAT->右击->OPEN->在SERVER OVERVIEW 中General 中 Open launch configurtion 单击—>选择Argument 把默认设置去掉,在VM argument 中加一句话 :  

   -Xms256M -Xmx1024M -XX:PermSize=64M -XX:MaxPermSize=128M

(3)在Eclilpse中修改启动参数,在VM arguments 加入了-Xms128m -Xmx512m,设置如下图所示(这是针对所有的工程进行的配置,即对本eclipse下的JDK进行的配置) windows --》 preferences --》 JDK



问题解决。

下面的是针对某一个工程进行的配置 右击工程 --》 runconfig --》 Arguments,仅仅针对这一个工程。



(4)问题的解决方案,遇到错误不要紧,关键是要心平气和的解决。感觉如今的最大收获就是它 了,遇到错误不在慌张不在浮躁不在无从下手,而是一步一步的调试,逐一的解决问题。不知道这算不算一种成长。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: