idea使用Jrebel或Tomcat运行时,提示堆栈内存溢出(java.lang.StackOverflowError)

idea里面装JRebel后,启动出现内存溢出问题

问题场景复现:

2021-04-21 09:21:29.302 [http-nio-8080-exec-3] ERROR o.jeecg.common.exception.JeecgBootExceptionHandler:64 - Handler dispatch failed; nested exception is java.lang.StackOverflowError
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.StackOverflowError
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1055)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)

Caused by: java.lang.StackOverflowError: null
	at java.base/java.io.ByteArrayOutputStream.<init>(ByteArrayOutputStream.java:64)
	at org.bouncycastle.asn1.ASN1Object.getEncoded(Unknown Source)
	at org.bouncycastle.asn1.pkcs.RSAPublicKey.toASN1Primitive(Unknown Source)
	at org.bouncycastle.asn1.ASN1OutputStream.writeObject(Unknown Source)
	at org.bouncycastle.asn1.ASN1Object.encodeTo(Unknown Source)
	at org.bouncycastle.asn1.ASN1Object.getEncoded(Unknown Source)

问题具体原因:

JRebel启动时需要大量的内存,JVM对永久区内存设置太小,堆内存过小所致

解决方案:

(1)不推荐:使用run或debug运行项目;
(2):切换使用Jrebel+Xrebel模式运行(前提:需更新ide插件Jrebel最新即可);
(3)配置tomcat内存大小
例:-server -XX:PermSize=512M -XX:MaxPermSize=1024m ;
在这里插入图片描述


版权声明:本文为weixin_44005694原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。