讲一讲故事开头吧,小菜自己觉得非常重要!

今天Jenkins构建项目后端成功,可怕的是到了服务器上部署时就失败了。开始拍错,先是怀疑Jenkins在捣乱呢,因此在本地打包发布,非常顺利的成功了。把这个war包拿到服务器上去部署,竟然失败!排除Jenkins的嫌疑了。这就跑不了是服务器在使坏了, 怎么回事儿呢也不知道如何下手了,看看Jboss的日志吧,很多有关定时器调用超时的错误提示,只有这么一个特别的:java.lang.OutOfMemoryError:Metaspace。内存溢出,好,很好,那就来扩大就好了。

1、打开Jboss下的bin/standalone.conf文件
找到:
JAVA_OPTS="-Xms1303m -Xmx1303m -XX:MaxMetaspaceSize=512m -Djava.net.preferIPv4Stack=true"
修改:MaxMetaspaceSize=512m 保存,很好。

2、将standalone.sh运行一下(我是在linux下操作的,如果你是Windows环境请直接点击运行standalone.bat文件)
命令:./standalone.sh
运行这个命令时报错了。提示有的地址正在使用,杀死所有进程来解决。
命令:kill -9 进程ID
再次运行:./standalone.sh

3、成功解决问题。

故事起因
是加载到内存中的 class 数量太多或者体积太大,然后JVM就会挂掉。主要是不会JVM优化,代码优化所导致。

怎样避免呢?

还是要先学习鸭!这也是最大的收获了,有知道了学习JVM的重要性了。加油鸭!

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐