问题介绍
今天刚接到一个springboot
的新项目,在启动的时候内存溢出了导致项目没启动起来

关键报错信息如下:
Error:java: OutOfMemoryError: insufficient memory
问题排查
一般出现 OOM 第一感觉都会想是不是项目某块代码写的有问题导致的内存溢出,但是仔细想,一般我们遇到内存溢出都是在项目运行的过程中,申请的内存大于系统(或 JVM 分配的堆内存)所能提供的内存,导致无法申请到足够的内存,才会抛出 OOM 异常
很明显的,我这里的代码还没运行起来就提示 OOM 异常了,而且代码是刚从 master 分支拉下来的,master 是比较稳定的分支,所以不太可能是代码的问题
既然不是代码问题,那么就有可能是 idea 内存不足导致的 OOM,查看发现 idea 使用了 1.11G 的内存

而我给 idea 分配的堆内存为 2G

明显还有很多内存可以用,可为什么就 OOM 了呢?进一步观察 CPU 使用情况发现,当运行项目的时候,会启动一个 java 进程,并且 CPU 的使用率很高

并且在抛出 OOM 之前,idea 一直都卡在 building 阶段

查询资料发现,idea 的 build 阶段会对整个项目进行编译。所以这里的 OOM 有可能是 idea 内部的编译进程内存不足导致的
问题解决
在 idea 官网查阅关于内存的配置中,发现这么一个配置项

文档链接:https://www.jetbrains.com/help/idea/increasing-memory-heap.html
我们可以在 idea 的 Build, Execution, Deployment -> Compiler 设置中,对构建进程的堆内存进行设置

我这里默认设置的是 700M,将其改为 1024M。发现项目果然可以正常启动了… 果真是 idea 配置的问题
总结
工作中经常遇到奇奇怪怪的问题,不管是代码问题也好,编译器问题也好,只要我们保持清晰的头脑,就能很快的找到问题的解决方法
原文始发于微信公众号(huangxy):Idea 项目启动 OOM 问题解决
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/160103.html