java.lang.OutOfMemoryError: Java heap space

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

今天我想说说这个有趣的问题,这的确是个让人费解的是error
问题来源:windows

        这个问题通常会出在myecplise 和ecplise ,即在java程序还在测试阶段,可是我想若是你的程序export后应该还会遇到这个问题eclipse

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

报错分析:jvm

        这个错误的出现主要是java的虚拟机jvm的内存不够了,通俗点儿说就是java程序运行过程当中JVM能够调配使用的内存空间的设置(JVM在启动的时候会自动设置Heap size的值,固然这个值是能够手动指定的) 。 而这个问题出现的根源也是比较多,可是通常来讲归结为两点:测试


 一、所谓的内存泄漏(怎么泄漏的,本身找缘由),致使你的jvm内存不够使用;
 二、处理的数据太大(这个是最主要的缘由),也就是你的数据处理太多,jvm一会儿搞不定了;spa

解决方法:code

        针对错误分析给出解决方法
 一、对于内存泄漏而言,固然是去查看本身的程序了,查看你的变量的定义,实例化,等等;
 二、对于数据量大,主要的处理是增长jvm的大小,分批处理你要处理的数据;

 
 调整jvm (写的太大会曝出 Error occurred during initialization of VM Could not reserve enough space for object heap)
 eclipse中的解决办法是:windows->preferences->Java->Installed JARS->edit->Default VM Arguments 这个文本框中输入:-Xms256m -Xmx512m
 myecplise中的处理相似,至于这个参数到底多少合适,你若是想从我这儿看到结果那你错了,这个参数的给出是你本身实验的结果,个人不必定适合你,这个也是不少人当遇到问题来寻找方法解决时候的通病,总但愿别人给你一个东西那就可使用了(可是这个只是扬汤止沸,而不是釜底抽薪的作法)
 
 下面介绍釜底抽薪的的作法————对处理数据的分批量处理,这是处理数据的王道,由于数据大因此分开处理(这就跟你拿东西同样,篮子过小拿不来东西,要不换个大点儿的篮子要不你少拿点儿)
 
PS:ip

          若是看到这儿你还对Java heap space 问题的处理没有头绪那只能说是个人失败了,固然我这里给你的主要是问什么会出现这个问题和解决这个问题的思路,至于具体的方法,你能够 找度娘啊  内存

 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space  ,但愿我能够帮到你。
 虚拟机

相关文章
相关标签/搜索