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、找到生产线程的地方将其优化。问题解决。

相关推荐
❀͜͡傀儡师9 小时前
SpringBoot与Artemis整合,实现航空行李追踪消息中枢系统
java·spring boot·后端
青云交9 小时前
Java 大视界 -- Java 大数据在智能交通高速公路收费系统优化与通行效率提升实战
java
Ulyanov9 小时前
Impress.js深度技术解析:架构基础与结构化设计
开发语言·前端·javascript
bybitq9 小时前
cmake构建c++项目时,vscode/cursor无法识别头文件路径,导致报错,解决方案
开发语言·c++·vscode
哪里不会点哪里.9 小时前
IoC(控制反转)详解:Spring 的核心思想
java·spring·rpc
充气大锤9 小时前
前端实现流式输出配合katex.js
开发语言·前端·javascript·ai·vue
麦兜*9 小时前
SpringBoot Actuator监控端点详解,打造生产级应用健康检查
java·spring boot·后端
无限进步_9 小时前
二叉搜索树(BST)详解:从原理到实现
开发语言·数据结构·c++·ide·后端·github·visual studio
邝邝邝邝丹9 小时前
vue2-computed、JS事件循环、try/catch、响应式依赖追踪知识点整理
开发语言·前端·javascript
悟能不能悟9 小时前
Spring Boot 中处理跨域资源
java·spring boot·后端