OOM 未触发 JVM 崩溃的可能原因
1. OOM 未触发 JVM 崩溃的可能原因
(1) 未配置 JVM 参数强制崩溃
关键参数缺失:
若未添加 -XX:+CrashOnOutOfMemoryError,JVM 在 OOM 时可能仅抛出异常并正常退出,而非崩溃,因此不会生成 hs_err_pid.log。
# 正确配置示例(需添加 CrashOnOutOfMemoryError)
java -Xmx10m -XX:+CrashOnOutOfMemoryError -XX:ErrorFile=./hs_err_pid.log MyApp
(2) 应用程序捕获并处理了 OOM
代码逻辑干扰:
若代码中通过 try-catch 捕获了 OutOfMemoryError 并执行了 System.exit() 或忽略异常,JVM 会主动终止,不会触发崩溃日志生成。
try {
// 可能触发 OOM 的操作
} catch (OutOfMemoryError e) {
System.exit(1); // 强制退出,不生成 hs_err_pid.log
}
(3) 日志路径权限或磁盘问题
权限不足:
若 -XX:ErrorFile 指定的路径无写入权限,或磁盘已满,JVM 无法生成日志文件。
# 检查路径权限
ls -ld /path/to/log/directory
# 检查磁盘空间
df -h
2. 线程转储与 OOM 的关联分析
(1) 线程转储未包含 OOM 堆栈
转储时机问题:
当前日志可能是在 OOM 前手动触发的线程快照(如通过 jstack 或 kill -3),而非 JVM 崩溃时自动生成。真正的 OOM 崩溃日志应包含 OutOfMemoryError 堆栈和内存分配失败信息。
(2) 内存缓慢泄漏导致无崩溃
长期资源耗尽:
若内存缓慢泄漏,JVM 可能因频繁 Full GC 进入“挣扎状态”,但未达到崩溃阈值(如堆外内存耗尽或元空间溢出),此时需结合 GC 日志分析。
# 启用 GC 日志
java -Xmx10m -Xlog:gc*,gc+heap=debug:file=gc.log -XX:+CrashOnOutOfMemoryError MyApp
3. 排查与验证步骤
(1) 确认 JVM 参数配置
启动命令中必须包含以下参数:
-XX:+CrashOnOutOfMemoryError # 强制 OOM 时崩溃
-XX:ErrorFile=./hs_err_pid.log # 指定错误日志路径
(2) 检查系统日志与退出码
JVM 退出状态码:
正常退出码(如 1):表明 OOM 未被转换为崩溃。
崩溃退出码(如 134):表明 JVM 崩溃,应生成日志。
echo $? # 查看上次命令退出码
操作系统日志:
dmesg | grep -i "java" # 检查内核是否因 OOM Killer 终止进程
journalctl -k | grep "Out of memory"
(3) 模拟 OOM 测试
使用以下代码强制触发 OOM 并验证日志生成:
public class OOMTest {
public static void main(String[] args) {
List<byte[]> list = new ArrayList<>();
while (true) {
list.add(new byte[10 * 1024 * 1024]); // 每次分配 10MB
}
}
}
# 运行命令
java -Xmx10m -XX:+CrashOnOutOfMemoryError -XX:ErrorFile=./hs_err_pid.log OOMTest
解决方案总结
强制 JVM 崩溃:添加 -XX:+CrashOnOutOfMemoryError 参数。
检查代码逻辑:避免捕获 OutOfMemoryError 后主动退出。
验证路径权限:确保 -XX:ErrorFile 路径可写且磁盘空间充足。
结合 GC 日志分析:监控内存泄漏趋势。
若问题仍存,提供完整的 JVM 启动参数、GC 日志及操作系统日志可进一步定位根因。
相关文章:
OOM 未触发 JVM 崩溃的可能原因
1. OOM 未触发 JVM 崩溃的可能原因 (1) 未配置 JVM 参数强制崩溃 关键参数缺失: 若未添加 -XX:CrashOnOutOfMemoryError,JVM 在 OOM 时可能仅抛出异常并正常退出,而非崩溃,因此不会生成 hs_err_pid.log。 # 正确配置示例&…...
计算机视觉cv2入门之车牌号码识别
前边我们已经讲解了使用cv2进行图像预处理与边缘检测等方面的知识,这里我们以车牌号码识别这一案例来实操一下。 大致思路 车牌号码识别的大致流程可以分为这三步:图像预处理-寻找车牌轮廓-车牌OCR识别 接下来我们按照这三步来进行讲解。 图像预处理 …...
xml+html 概述
1.什么是xml xml 是可扩展标记语言的缩写: Extensible Markup Language。 <root><h1> text 1</h1> </root> web 应用开发,需要配置 web.xml,就是个典型的 xml文件 <web-app><servlet><servlet-name&…...
C++数据结构与二叉树详解
前言: 在C编程的世界里,数据结构是构建高效程序的基石,而二叉树则是其中最优雅且应用广泛的数据结构之一。本文将带你深入理解二叉树的本质、实现与应用,助你在算法设计中游刃有余。 一、二叉树的基本概念 1. 什么是二叉树 二叉树…...
解决6栈6层码头集装箱堆栈翻箱最优解问题
‘’’ con 1 origin_stack = [ [4, 4, 1, 0, 0, 0], # 第一栈 [4, 3, 2, 1, 0, 0], # 第二栈 [4, 2, 2, 1, 0, 0], # 第三栈 [3, 3, 3, 1, 0, 0], # 第四栈 [3, 4, 2, 1, 0, 0], # 第五栈 [4, 2, 3, 2, 0, 0] # 第六栈 ] con 2 origin_stack = [ [4, 4, 3, 0, 0, 0], # 第一栈…...
Java 序列化与反序列化终极解析
Java 序列化与反序列化终极解析 1. 核心概念 (1) 什么是序列化? 定义:将对象转换为字节流的过程(对象 → 字节) 目的: 持久化存储(如保存到文件) 网络传输(如RPC调用)…...
YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLOv11、YOLOv12的网络结构图
文章目录 一、YOLOv5二、YOLOv6三、YOLOv7四、YOLOv8五、YOLOv9六、YOLOv10七、YOLOv11八、YOLOv12九、目标检测系列文章 本文将给出YOLO各版本(YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLOv11、YOLOv12)网络结构图的绘制方法及图。本文所展…...
leetcode0145. 二叉树的后序遍历-easy
1 题目:二叉树的后序遍历 官方标定难度:易 给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[3,2,1] 解释: 示例 2: 输入…...
【Leetcode 每日一题】2364. 统计坏数对的数目
问题背景 给你一个下标从 0 0 0 开始的整数数组 n u m s nums nums。如果 i < j i < j i<j 且 j − i ≠ n u m s [ j ] − n u m s [ i ] j - i \ne nums[j] - nums[i] j−inums[j]−nums[i],那么我们称 ( i , j ) (i, j) (i,j) 是一个 坏数对 。…...
完整的 .NET 6 分布式定时任务实现(Hangfire + Redis 分布式锁)
完整的 .NET 6 分布式定时任务实现(Hangfire Redis 分布式锁) 以下是完整的解决方案,包含所有必要组件: 1. 基础设施层 1.1 分布式锁服务 // IDistributedLockService.cs public interface IDistributedLockService {ValueTa…...
人脸识别联合行为检测的办公管理新模式
基于人脸识别与行为检测的办公智能化解决方案 一、背景 在传统办公场景中,员工考勤管理、工位使用情况统计、安全监控等环节存在诸多痛点。例如,传统考勤方式如指纹打卡、刷卡等存在代打卡现象,考勤数据不准确;对于员工是否在工…...
鸿蒙NEXT开发键盘工具类(ArkTs)
export declare type KeyboardCallBack (show: boolean, height: number) > void; import { AppUtil } from ./AppUtil; import { LogUtil } from ./LogUtil; import { ArrayUtil } from ./ArrayUtil;/*** 键盘工具类* author 鸿蒙布道师* since 2025/04/18*/ export class…...
Python爬虫第17节-动态渲染页面抓取之Selenium使用下篇
目录 引言 一、获取节点信息 1.1 获取属性 1.2 获取文本值 1.3 获取ID、位置、标签名、大小 二、切换Frame 三、延时等待 3.1 隐式等待 3.2 显式等待 四、前进后退 五、Cookies 六、选项卡管理 七、异常处理 引言 这一节我们继续讲解Selenium的使用下篇࿰…...
【数据结构】第四弹——LinkedList与链表
文章目录 一. ArrayList 的缺陷二.链表2.1 链表的概念及结构2.2 链表的结构2.2.1 单向或者双向2.2.2 带头或者不带头2.2.3 循环非循环 2.3 链表的实现1. IList接口2. MySingleList 类中具体实现(不带头单向非循环链表)1. 节点抽象成内部类手搓一个链表2. 头插法3. 尾插法4. 指定…...
设计模式从入门到精通之(五)观察者模式
观察者模式:实现高效事件通知的秘诀 在日常生活中,我们经常需要同步通知多方的信息变更。比如天气预报系统、股票价格波动提醒、社交媒体的点赞通知等。这些场景中,通知机制需要高效、灵活,而不会因为通知方的变化影响系统整体。 …...
chili3d调试笔记3 加入c++ 大模型对话方法 cmakelists精读
加入 #include <emscripten/bind.h> #include <emscripten/val.h> #include <nlohmann/json.hpp> 怎么加包 函数直接用emscripten::function,如: emscripten::function("send_to_llm", &send_to_llm); set (CMAKE_C…...
使用人工智能大模型kimi,如何免费制作PPT?
使用人工智能大模型kimi,如何免费制作PPT? 手把手操作视频https://edu.csdn.net/learn/40406/666573...
ModbusTCP 转 Profinet 主站网关
一、 功能概述 1.1 设备简介 本产品是 ModbusTCP 和 Profinet(M) 网关(以下简称网关),使用数据映射 方式工作。 本产品在 ModbusTCP 侧作为 ModbusTCP 从站,接 PLC 、上位机、 wincc 屏 等;在 Profin…...
进阶篇|CAN FD 与性能优化
引言 1. CAN vs. CAN FD 对比 2. CAN FD 帧结构详解...
6.6 “3步调用ChatGPT打造高可靠Python调度器,零依赖实现定时任务自动化“
3步调用ChatGPT打造高可靠Python调度器,零依赖实现定时任务自动化 关键词:ChatGPT代码生成、Python调度器设计、定时任务自动化、异常处理机制、日志监控系统 需求分析与技术选型 GitHub Sentinel 需要实现两种定时任务模式: #mermaid-svg-prOScv2NNhn6w90N {font-family:…...
HarmonyOS 基础语法概述 UI范式
ArkUI框架 - UI范式 ArkTS的基本组成 装饰器: 用于装饰类、结构、方法以及变量,并赋予其特殊的含义。如上述示例中Entry、Component和State都是装饰器,Component表示自定义组件,Entry表示该自定义组件为入口组件,Stat…...
23种设计模式-创建型模式之建造者模式(Java版本)
Java 建造者模式(Builder Pattern)详解 🧱 什么是建造者模式? 建造者模式用于将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。 适用于创建过程复杂、构造顺序稳定但组件变化的对象。…...
【AI提示词】退休规划顾问专家
提示说明 随着人口老龄化的加剧,越来越多的人开始关注退休规划问题。一个专业的退休规划顾问可以帮助用户合理规划退休生活,确保退休后的生活质量。 提示词 # 角色 退休规划顾问专家## 注意 1. 专家设计应符合退休规划的专业性和可靠性,帮…...
文献总结:NIPS2023——车路协同自动驾驶感知中的时间对齐(FFNet)
FFNet 一、文献基本信息二、背景介绍三、相关研究1. 以自车为中心的3D目标检测2. 车路协同3D目标检测3. 特征流 四、FFNet网络架构1. 车路协同3D目标检测任务定义2. 特征流网络2.1 特征流生成2.2 压缩、传输与解压缩2.3 车辆传感器数据与基础设施特征流融合 3. 特征流网络训练流…...
(二十六)Java观察者模式在Android开发中的应用详解
Java观察者模式在Android开发中的应用 观察者模式(Observer Pattern)是一种行为型设计模式,它定义了一种一对多的依赖关系,使得多个观察者对象可以同时监听一个主题对象。当主题对象的状态发生变化时,所有注册的观察者…...
goland做验证码识别时报“undefined: gosseract.NewClient”
gosseract 应该有 和 c 相关的配置库因此需要安装 cgo 并且启用 CGO_ENABLED 在cmd下面输入这个 go env -w CGO_ENABLED1 接着输入 go env 验证是否设置成功 解决了这个问题后 “undefined: gosseract.NewClient” 又出现了 # runtime/cgo …...
ceph weight 和 reweight 的区别
ceph osd df ID CLASS WEIGHT REWEIGHT SIZE RAW USE DATA OMAP META AVAIL %USE VAR PGS STATUS0 nvme 6.98630 0.95508 7.0 TiB 5.0 TiB 4.9 TiB 13 GiB 33 GiB 2.0 TiB 71.10 0.96 83 up1 nvme 6.98630...
# 使用 PyTorch 构建并训练一个简单的 CNN 模型进行图像分类
使用 PyTorch 构建并训练一个简单的 CNN 模型进行图像分类 在深度学习领域,卷积神经网络(CNN)是处理图像分类任务的强大工具。本文将通过一个简单的示例,展示如何使用 PyTorch 构建、训练和测试一个 CNN 模型,用于对食…...
Linux网络编程 深入解析TFTP协议:基于UDP的文件传输实战
知识点1【TFTP的概述】 学习通信的基本:通信协议(具体发送上面样的报文)、通信流程(按照什么步骤发送) 1、TFTP的概述 tftp:简单文件传输协议,**基于UDP,**不进行用户有效性验证 …...
汽车免拆诊断案例 | 2019款大众途观L车鼓风机偶尔不工作
故障现象 一辆2019款大众途观L车,搭载DKV发动机和0DE双离合变速器,累计行驶里程约为8万km。车主进厂反映,鼓风机偶尔不工作。 故障诊断 接车后试车,鼓风机各挡位均工作正常。用故障检测仪检测,空调控制单元&#x…...
编程常见错误归类
上一篇讲了调试,今天通过一个举例回忆一下上一篇内容吧! 1. 回顾:调试举例 在VS2022、X86、Debug的环境下,编译器不做任何优化的话,下⾯代码执⾏的结果是啥? #include <stdio.h> int main() {int …...
Python 3.13 support for PyTorch
Python 3.13 support for PyTorch Python 3.13 support for PyTorch 去官网可以查到具体信息:https://pytorch.org/get-started/locally/ 然后选择自己的CUDA版本,下面会显示下载网站,比如我选择12.4,则会出现:pip3 …...
中国联通:《DeepSeek洞察与大模型应用:人工智能技术发展与应用实践》(可下载)
近年来,人工智能(AI)技术迅猛发展,尤其是大模型技术的崛起,正在深刻改变各行各业的运营模式和创新路径。作为中国通信行业的领军企业之一,中国联通积极拥抱AI技术变革,结合自身在通信网络、大数…...
k8s 调整Node节点 Max_Pods
默认情况下,Kubernetes集群中一个Node最多能起110个Pod。 这是基于性能和资源管理的考虑,以确保Kubernetes集群的稳定性和可靠性。 查看kht125节点上支持的最大pod数量: kubectl describe node kht125 | grep -i “Capacity|Allocatable” -A 6 调整…...
VR拍摄要点与技巧有哪些?有哪些最佳实践?
VR拍摄要点与技巧:最佳实践 VR技术通过模拟环境,使用户能够沉浸在一个完全由计算机生成的虚拟世界中,进行互动体验。在VR拍摄领域,我们主要利用这一技术来创建360度全景视频或图片,让观众能够全方位、无死角地感受拍摄…...
使用 Docker 安装 Elastic Stack 并重置本地密码
Elastic Stack(也被称为 ELK Stack)是一个非常强大的工具套件,用于实时搜索、分析和可视化大量数据。Elastic Stack 包括 Elasticsearch、Logstash、Kibana 等组件。本文将展示如何使用 Docker 安装 Elasticsearch 并重置本地用户密码。 ###…...
安卓手机万能遥控器APP推荐
软件介绍 安卓手机也能当“家电总控台”?这款小米旗下的万能遥控器APP,直接把遥控器做成“傻瓜式操作”——不用配对,不连蓝牙,点开就能操控电视、空调、机顶盒,甚至其他品牌的电器!雷总这波操作直接封神&…...
PLOS ONE:VR 游戏扫描揭示了 ADHD 儿童独特的大脑活动
在孩子的成长过程中,总有那么一些“与众不同”的孩子。他们似乎总是坐不住,课堂上小动作不断,注意力难以集中,作业总是拖拖拉拉……这些行为常常被家长和老师简单地归结为“淘气”“不听话”。然而,他们可能并不只是“…...
Linux 系统编程 day4 进程管道
进程间通信(IPC) Linux环境下,进程地址空间相互独立,任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能互相访问,要交换数据必须通过内核,在内核中开辟一块缓冲区…...
基于DeepSeek的考研暑假日志分析
注:我去年考研时写了日志,大致记录了我每天的主要活动。由于过于琐碎,一直没有翻看。突发奇想,现在利用deepseek总结其中规律。 从你的日志中可以总结出以下规律和活动兴衰起落: 一、学习活动规律与演变 …...
Python 写生成 应用商店(2025版) 网页 方便收集应用 ,局域网使用
工具【1】:nginx 配置 nginx.conf 文件 server { listen 8080; server_name example.com; location / { root E:/BIT_Soft_2025; index index.html index.htm; } # 定义错误页面 error_page 404 /4…...
LLaMA Factory多模态微调实践:微调Qwen2-VL构建文旅大模型
LLaMA Factory 是一款开源低代码大模型微调框架,集成了业界最广泛使用的微调技术,支持通过 Web UI 界面零代码微调大模型,目前已经成为开源社区内最受欢迎的微调框架之一,GitHub 星标超过 4.7 万。本教程将基于通义千问团队开源的…...
Ubuntu20.04 部署llama-factory问题集
llama3 微调教程之 llama factory 的 安装部署与模型微调过程,模型量化和gguf转换。_llamafactory 部署-CSDN博客 1.跟着教程 llama-factory下载不下来 来,试着换源,多试几次,就可以成功了。。。 2.跟着教程,发现无法…...
鸿蒙语言基础
准备工作 去鸿蒙官网下载开发环境 点击右侧预浏览,刷新和插销按钮,插销表示热更新,常用按钮。 基础语法 string number boolean const常量 数组 let s : string "1111"; console.log("string", s);let n : number …...
每天一道C语言精选编程题之字符串拷贝
题目描述 写⼀个函数my_strcpy,实现拷⻉字符串的功能,假设给定⼀个字符数组a,再给定⼀个字符数组b,将字符串a中的内容拷⻉到字符串b中,拷⻉内容包含字符串末尾的 \0 字符。 解法思路 使⽤ while 循环通过指针的⽅式逐…...
C#中扩展方法和钩子机制使用
1.扩展方法: 扩展方法允许向现有类型 “添加” 方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像实例方法一样进行调用。 使用场景: 1.当无法修改某个类的源代码&#…...
基于CNN与VGG16的图像识别快速实现指南
基于CNN与VGG16的图像识别快速实现指南 以下是从零实现代码到原理剖析的完整流程,包含TensorFlow/Keras框架的代码示例与关键优化技巧,满足快速实验需求。 一、核心原理对比 特性CNN(基础模型)VGG16结构深度5-10层(如…...
中间件--ClickHouse-9--MPP架构(分布式计算架构)
1、MPP 架构基础概念 MPP(Massively Parallel Processing 大规模并行处理) 是一种分布式计算架构,专门设计用来高效处理大规模数据集。在这种架构下*,数据库被分割成多个部分,每个部分可以在不同的服务器节点上并行处理*。这意味着ÿ…...
如何在PDF.js中改造viewer.html以实现PDF的动态加载
在PDF.js中改造viewer.html实现PDF动态加载,需结合参数传递、文件流处理及跨域配置等技术。以下是综合多个技术方案的核心实现步骤: 一、基础参数传递法 1. URL参数动态加载 通过修改viewer.html的URL参数传递PDF路径,适用于静态文…...
Android——动画
帧动画 帧动画就是很多张图片,一帧一帧的播放,形成的一个动画效果。 frame.xml <?xml version"1.0" encoding"utf-8"?> <animation-list xmlns:android"http://schemas.android.com/apk/res/android">&l…...