JVM(JAVA虚拟机)内存溢出导致内存不足,Java运行时环境无法继续

1、先贴出服务最后打印出来的日志,意思就是给虚拟机分配的内存被用完了,没有可用的内存了,服务运行不了了,被动停服了。详细的日志记录在了/home/user/zx/tomcat/apache-tomcat-8.5.82/bin/hs_err_pid147951.log文件里。

bash 复制代码
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007fded5df1000, 12288, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 12288 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /home/user/zx/tomcat/apache-tomcat-8.5.82/bin/hs_err_pid147951.log

2、找到hs_err_pid147951.log文件打开来看,发现有三万多条阻塞线程(大部分内存溢出问题因该都是线程导致的),这就说明有死循环在不断的生产线程。

3、使用命令ps -ef | grep java找到服务的pid。

4、使用命令top -Hp pid列出线程信息。可以看到线程数一直在增加。

5、找到其中一个,使用jstack pid打开堆栈信息,仔细查看里面的内容就会找到生产线程的地方。

6、找到生产线程的地方将其优化。问题解决。

相关推荐
Ai 编码助手20 分钟前
Go语言的数据竞争 (Data Race) 和 竞态条件 (Race Condition)
开发语言·后端·golang
cd小白38 分钟前
Linux第二课:LinuxC高级 学习记录day04
linux·开发语言·学习
计算机-秋大田1 小时前
基于微信小程序的游泳馆管理系统设计与实现(LW+源码+讲解)
java·微信小程序·小程序·课程设计
计算机-秋大田1 小时前
基于微信小程序的书籍销售系统设计与实现(LW+源码+讲解)
java·后端·微信小程序·小程序·课程设计
V+zmm101341 小时前
学生资助在线管理软件开发微信小程序ssm+论文源码调试讲解
java·数据库·微信小程序·小程序·毕业设计
毋若成2 小时前
【搭建JavaEE】(2)Tomcat安装配置和第一个JavaEE程序
java·java-ee·tomcat
daily_23332 小时前
c++领域展开第十二幕——类和对象(STL简介——简单了解STL)超详细!!!!
开发语言·c++
上位机付工2 小时前
C#轻松实现ModbusTCP服务器接口
服务器·开发语言·c#·modbustcp服务器
SomeB1oody2 小时前
【Rust自学】12.7. 使用环境变量
开发语言·后端·重构·rust
Future_yzx2 小时前
Java爬虫——使用Spark进行数据清晰
java·爬虫·spark