今天写了一段hadoop程序,就是简单的MapReduce,写完以后在eclipse运行时上报:java.lang.OutOfMemoryError: Java heap space内存溢出的错误。总是不明白为什么会溢出。
后来询问网友和上网查找资料了解到。
原来我们平时开发的eclipse就模仿了一个java运行环境,当点击run运行时就启动了一个java虚拟机用来模拟真实电脑中的虚拟机。
可能hadoop的底层底层代码中定义的变量比较大把我的eclipse中启动的JVM的内存占满了所以上报该错误。
处理方法:
有两种方法:
1、打开eclipse配置文件eclipse.ini,更改把-Xmx(其数值代表jvm可以使用的最大内存数)
2. 运行java程序时,选择run->run configuration->arguments,输入-Xms100M -Xmx800M(-Xms代表jvm启动时分配的内存大小,-Xmx代表可最大分配多少内存)。