标签:java heap space outofmemoryerror
一:起因
(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=-Xms384m -Xmx384m
注意:只有startup.bat启动tomcat,设置才能生效,如果利用windows的系统服务启动tomcat服务,上面的设置就不生效了,
就是说set JAVA_OPTS=-Xms384m -Xmx384m没起作用
因为eclipse里默认的一个程序的jvm配置为:-Xms8m -Xmx128m,所以我们的处理耗内存比较大时需要手动调整一下,以便不会内存溢出。具体的设置方法为:
选中被运行的类,点击菜单‘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,仅仅针对这一个工程。
java.lang.OutOfMemoryError: Java heap space
标签:java heap space outofmemoryerror
原文地址:http://blog.csdn.net/u010700335/article/details/41119071