当前位置: 首页 > news >正文

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

文章目录

  • 1. 复现问题
  • 2. 分析问题
  • 3. 解决问题
  • 4. 补充解决java.lang.OutOfMemoryError: PermGen space问题

1. 复现问题

今天使用idea开发时,突然报出如下错误:

在这里插入图片描述

Exception in thread "main" java.lang.OutOfMemoryError: Java heap spaceat 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)

2. 分析问题

OutOfMemoryError翻译成中文即是堆内存溢出,但什么情况下会出现堆内存溢出呢?

当我们在IDEA上运行较大项或较多项目时,会导致编译量很大,从而引起内存不足的情况,即报出Error:java: java.lang.OutOfMemoryError: Java heap space的错误,也就是堆内存溢出。

因此,需要修改Idea运行项目的内存大小。

  1. 首先,查看我的idea的堆内存大小。

快捷键ctrl + alt + s出现设置(Settings)弹出框,如下图所示:

在这里插入图片描述

  1. 找到Build,Execution,Deployment ,单击展开,如下图所示:

在这里插入图片描述

  1. 单击Complier,即可查看到我的堆内存大小,如下图所示:

在这里插入图片描述

由图可以看出,我的堆内存大小256M,无法承载我的项目,即报出了java.lang.OutOfMemoryError: Java heap space

此外,如果你的ctrl + alt + s快捷键被占用了,可以使用如下方式打开设置(Settings)弹出框

  • 单击file,如下图所示:

在这里插入图片描述

  1. 单击Settings,也可出现设置(Settings)弹出框

在这里插入图片描述

3. 解决问题

由上述分析可知,正因为在Complier设置的堆内存太小,导致无法承载大量的项目。

因而,我们可以将其设置为2048,如下图所示:

在这里插入图片描述

点击ok即可。

如果不点击ok,则配置不生效。

4. 补充解决java.lang.OutOfMemoryError: PermGen space问题

JDK1.6环境中,需要考虑到永久代的问题。

如果运行大项目提示java.lang.OutOfMemoryError: PermGen space 即永久代内存溢出问题 ,解决方式如下:

  1. 打开Tomcat配置Edit Configurations

在这里插入图片描述

  1. 点击Server,在VM options输入框输入如下配置
-Xms512m 
-Xmx2048m 
-XX:PermSize=512m 
-XX:MaxPermSize=2048m

在这里插入图片描述

点击ok即可。

如果不点击ok,则配置不生效。

  1. 参数说明:

    • -XmsJava Heap初始值,ServerJVM最好将-Xms-Xmx设为相同值,开发测试机JVM可以保留默认值

    • -XmxJava Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定

    • -XX:PermSize:设置持久代初始值

    • -XX:MaxPermSize:设置持久代最大值

总之是要根据本地配置适当修改,我是16G内存,就设置最大2G大气一点!

http://www.lryc.cn/news/4592.html

相关文章:

  • 为什么子进程要继承处理器亲缘性?
  • 【算法】高精度
  • 计算机网络-基本概念
  • 你评论,我赠书~【哈士奇赠书 - 13期】-〖Python程序设计-编程基础、Web开发及数据分析〗参与评论,即可有机获得
  • 【设计模式】我终于读懂了代理模式。。。
  • 每天10个前端小知识 【Day 2】
  • 帮助中心在线制作工具推荐这4款,很不错哟!
  • rabbitMQ相关文章汇总
  • 【C++】异常
  • @Validated注解不生效问题汇总
  • 华科万维C++章节练习2_4
  • 17万字数字化医院信息化建设大数据平台建设方案WORD
  • Android 11系统签名修改
  • 亚马逊、沃尔玛卖家自养号退款经验和测评技术
  • Spring Security in Action 第十一章 SpringSecurity前后端分离实战
  • 高级前端二面vue面试题(持续更新中)
  • 七大设计原则之依赖倒置原则应用
  • Dubbo面试题2023
  • Swift(5)
  • [Java 进阶面试题] CAS 和 Synchronized 优化过程
  • 算法思想 - 贪心算法
  • 解决需求变更难题的8大方案
  • NSSROUND#8[Basic]
  • Vue3代码初体验找不同
  • opencv调取摄像头录制
  • html标签手册
  • SpringMVC--视图、RESTful案例、处理AJAX请求
  • 一个同学升了leader,今年活还没干,他就已经想好组里成员的两次绩效考核怎么打了,还说:leader都是这样的!...
  • Docker 面试知识点
  • C++高级篇学习笔记