爱程序网

解决idea出现的java.lang.OutOfMemoryError: Java heap space的问题

来源: 阅读:

1. 复现问题

今天使用idea开发时,突然报出如下错误:
 
 
 
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at org.apdplat.word.dictionary.impl.DoubleArrayDictionaryTrie.allocate(DoubleArrayDictionaryTrie.java:188)
    at org.apdplat.word.dictionary.impl.DoubleArrayDictionaryTrie.init(DoubleArrayDictionaryTrie.java:207)
    at org.apdplat.word.dictionary.impl.DoubleArrayDictionaryTrie.addAll(DoubleArrayDictionaryTrie.java:307)
    at org.apdplat.word.dictionary.DictionaryFactory$DictionaryHolder$1.load(DictionaryFactory.java:116)
    at org.apdplat.word.util.AutoDetector.loadAndWatch(AutoDetector.java:102)
    at org.apdplat.word.dictionary.DictionaryFactory$DictionaryHolder.reload(DictionaryFactory.java:87)
    at org.apdplat.word.dictionary.DictionaryFactory.reload(DictionaryFactory.java:65)
    at org.apdplat.word.dictionary.DictionaryEnum.createDictionary(DictionaryEnum.java:65)
    at org.apdplat.word.dictionary.DictionaryEnum.<clinit>(DictionaryEnum.java:20)
    at com.zjs.Application.main(Application.java:42)
1
2
3
4
5
6
7
8
9
10
11
2. 分析问题
OutOfMemoryError翻译成中文即是堆内存溢出,但什么情况下会出现堆内存溢出呢?
 
当我们在IDEA上运行较大项或较多项目时,会导致编译量很大,从而引起内存不足的情况,即报出Error:java: java.lang.OutOfMemoryError: Java heap space的错误,也就是堆内存溢出。
 
因此,需要修改Idea运行项目的内存大小。
 
首先,查看我的idea的堆内存大小。
快捷键ctrl + alt + s出现设置(Settings)弹出框,如下图所示:
 
 
 
找到Build,Execution,Deployment ,单击展开,如下图所示:
 
 
单击Complier,即可查看到我的堆内存大小,如下图所示:

build process heap size 
 
 
由图可以看出,我的堆内存大小256M,无法承载我的项目,即报出了java.lang.OutOfMemoryError: Java heap space。
 
此外,如果你的ctrl + alt + s快捷键被占用了,可以使用如下方式打开设置(Settings)弹出框。
 
单击file,如下图所示:
 
 
单击Settings,也可出现设置(Settings)弹出框:
 
 
3. 解决问题
由上述分析可知,正因为在Complier设置的堆内存太小,导致无法承载大量的项目。
 
因而,我们可以将其设置为2048,如下图所示:
 
 
 
点击ok即可。
 
如果不点击ok,则配置不生效。
 
4. 补充解决java.lang.OutOfMemoryError: PermGen space问题
在JDK1.6环境中,需要考虑到永久代的问题。
 
如果运行大项目提示java.lang.OutOfMemoryError: PermGen space 即永久代内存溢出问题 ,解决方式如下:
 
打开Tomcat配置Edit Configurations
 
 
点击Server,在VM options输入框输入如下配置
-Xms512m 
-Xmx2048m 
-XX:PermSize=512m 
-XX:MaxPermSize=2048m
1
2
3
4
 
 
点击ok即可。
 
如果不点击ok,则配置不生效。
 
参数说明:
 
-Xms:Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值
 
-Xmx:Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定
 
-XX:PermSize:设置持久代初始值
 
-XX:MaxPermSize:设置持久代最大值
 
总之是要根据本地配置适当修改,我是16G内存,就设置最大2G大气一点!
————————————————
版权声明:本文为CSDN博主「super先生」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lvoelife/article/details/128999000

Tags:
相关文章列表:
关于爱程序网 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助