JVM内存溢出Java heap space

报错java.lang.OutOfMemoryError: Java heap space
这个是内存溢出吧?
在网上搜索了一些资料,
说修改TOMCAT_HOME/bin/catalina.bat,在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:

set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m

但是JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。

这里电脑安装内存8G(8192M),1/4就是2084M,那我不是要设置-Xmx大于2084M,然后 -Xms要和-Xmx 设置一样大吗?

4个回答

先检查下代码,看是不是确实有泄漏的问题,没关资源、用了集合等没清空一直在加等。
确实是项目运行需要这么大内存再去修改JVM内存设置吧

m992705800
malachi3 回复yuyubingMan: 数据库是用的hibernate创建连接池,应该没问题吧
大约 4 年之前 回复
yuyubingMan
yuyubingMan 回复m992705800: 你查一下是不是有IO流没关、数据库连接没关、拿来当缓存的集合没有clear并且会一直无限往里边放东西等情况
大约 4 年之前 回复
m992705800
malachi3 用了集合 还要怎么处理
大约 4 年之前 回复

修改这个都是不靠谱的,还不如自己改改代码

你设置一样大, 2G试试

JAVA_OPTS=-Xms2048m -Xmx2048m 放在开头

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐