IDEA编译报错:java.lang.OutOfMemoryError: Java heap space和java.lang.StackOverflowError

本文深入解析Java中常见的内存错误,包括OutOfMemoryError和StackOverflowError,详细介绍了在使用Intellij IDEA进行开发时,如何调整JVM参数来避免这些错误,提供了具体的步骤和参数配置。
ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

名词解释
java.lang.OutOfMemoryError 内存不足错误
java.lang.StackOverflowError 栈溢出错误

用Intellij IDEA开发应用时,如果编译的代码量很大,会碰到
java.lang.OutOfMemoryError: Java heap space
的报错:
在这里插入图片描述
通常解决方法如下
1.点击file—setting——搜索compiler
在这里插入图片描述
2.修改“bulid process heap size(Mbytes)” 的值 改为 2048
在这里插入图片描述
而java.lang.StackOverflowError 通常由于程序死循环,无限递归·但我也遇到过一种情况,没有设置jvm参数所致

解决如下:
1.点击tomcat—选择Edit configurations
在这里插入图片描述
2.选择如图所示 VM options
在这里插入图片描述
设置如下:
-Ddruid.log.stmt.executableSql=true
-server
-Xms1024m
-Xmx1024m
-XX:MaxNewSize=512m
-XX:PermSize=128m
-XX:MaxPermSize=256m
-noverify
-Drebel.spring_plugin=true
-Drebel.mybatis_plugin=true
-Drebel.log4j-plugin=true
-Drebel.disable_update=true`

点击"Apply"—“OK”

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

2025-06-23 00:09:39.631 DEBUG 43184 --- [http-nio-8080-exec-6] o.s.web.servlet.DispatcherServlet : "ERROR" dispatch for POST "/error", parameters={} 2025-06-23 00:09:39.632 DEBUG 43184 --- [http-nio-8080-exec-7] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController#error(HttpServletRequest) 2025-06-23 00:09:39.632 ERROR 43184 --- [http-nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap space] with root cause java.lang.OutOfMemoryError: Java heap space at com.sun.proxy.$Proxy152.getString(Unknown Source) ~[na:na] at org.apache.ibatis.type.StringTypeHandler.getNullableResult(StringTypeHandler.java:36) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.type.StringTypeHandler.getNullableResult(StringTypeHandler.java:26) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.type.BaseTypeHandler.getResult(BaseTypeHandler.java:86) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.applyAutomaticMappings(DefaultResultSetHandler.java:582) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:412) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap(DefaultResultSetHandler.java:362) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:333) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:306) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:202) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:66) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:80) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:65) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:333) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:90) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142) ~[mybatis-3.5.13.jar!/:3.5.13] at jdk.internal.reflect.GeneratedMethodAccessor250.invoke(Unknown Source) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:426) ~[mybatis-spring-2.0.4.jar!/:2.0.4] at com.sun.proxy.$Proxy74.selectList(Unknown Source) ~[na:na] at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:223) ~[mybatis-spring-2.0.4.jar!/:2.0.4] at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:147) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:80) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:142) ~[mybatis-3.5.13.jar!/:3.5.13] at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86) ~[mybatis-3.5.13.jar!/:3.5.13] at com.sun.proxy.$Proxy86.getPat060List(Unknown Source) ~[na:na] at jdk.internal.reflect.GeneratedMethodAccessor1800.invoke(Unknown Source) ~[na:na]
06-24
### IntelliJ IDEAJava 程序出现 OutOfMemoryError: Java heap space 错误的解决方案 #### 调整编译过程堆大小 在 IntelliJ IDEA 的设置中可以调整用于编译过程的 JVM 堆大小。通过增大 `Build process heap size` 可以有效缓解由于编译过程中产生的大量临时对象所引起的内存不足问题。 对于遇到该类错误的情况,建议将默认值从较小数值(如700MB)提升至更高水平(例如1000MB),具体操作如下: 进入 **Settings/Preferences** 对话框,使用搜索功能查找 "heap" 关键词定位到 Compiler 配置项下的 “Build process heap size (Mbytes)” 字段并将其设为更大值即可[^1]。 ```bash # 将 Build Process Heap Size 设定为 1GB 或以上 ``` #### 修改运行配置中的 VM 参数 另一个重要的方面在于调整应用程序本身的 JVM 启动参数来增加可用堆内存。这一步骤能够直接影响程序执行期间可使用的最大内存量,从而避免因业务逻辑复杂度高或数据处理量大而导致的内存溢出异常。 针对此类情况,推荐做法是在项目的 Run Configuration 下指定合适的 `-Xms` `-Xmx` 参数值,比如设置初始堆大小 (`-Xms`) 最大堆大小 (`-Xmx`) 到合理范围内的较高值,像下面这样: 打开项目中的 **Run → Edit Configurations...**, 在弹出窗口找到目标模块对应的配置文件,在其中添加或编辑 VM Options 字段内容如下所示[^4]: ```properties -Xms512m -Xmx2g # 设置最小堆为512MB, 最大堆为2GB ``` > 注意:实际设定时需根据机器物理内存状况以及预期负载需求灵活调整上述参数的具体取值;过高的配置可能会导致其他资源竞争加剧甚至影响系统稳定性。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值