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