JVM 直接内存排障:堆没满,进程也可能被杀
JVM 直接内存排障堆没满进程也可能被杀一、内存问题不只发生在 Java 堆线上 Java 服务被 OOMKill 时很多人第一反应是看堆内存。可是堆使用率不高进程仍然被系统杀掉这种情况并不少见。原因可能是直接内存、线程栈、Metaspace、JIT Code Cache、JNI 或本地库占用了大量进程内存。直接内存尤其容易被忽略。Netty、NIO、压缩库、序列化框架、零拷贝传输都可能使用堆外内存。堆没满不代表进程 RSS 安全。二、JVM 进程内存要按区域看进程内存由多个区域组成。flowchart TD A[JVM 进程 RSS] -- B[Java Heap] A -- C[Direct Memory] A -- D[Metaspace] A -- E[Thread Stack] A -- F[Code Cache] A -- G[Native Library]只看-Xmx和 GC 日志会漏掉大量堆外消耗。容器环境里RSS 超过 cgroup limit 就可能被杀。三、先确认直接内存上限和使用常用排查入口如下。jcmd pid VM.native_memory summary jcmd pid VM.flags jstat -gc pid 1000 cat /sys/fs/cgroup/memory.current如果开启 NMT可以更清楚地看到 native memory 分布。没有开启时也要结合 RSS、堆使用、线程数和容器内存指标推断。四、直接内存泄漏常见于缓冲区生命周期Netty ByteBuf 未释放、缓存池无限增长、文件传输缓冲未回收都可能导致直接内存上涨。堆里只保留少量对象引用真正占用在堆外普通 heap dump 不一定明显。还要检查线程数。每个线程都有栈空间线程池配置过大时线程栈会吃掉不少内存。堆外问题和线程问题经常一起出现。容器限制要和 JVM 参数对齐。MaxRAMPercentage、MaxDirectMemorySize、Xss、Metaspace 上限都要统一规划。只设置 Xmx其他区域放任增长最终仍然可能超过容器限制。最后监控要看 RSS 和堆的差值。差值持续扩大说明堆外或 native 区域在增长。等 OOMKill 后再看日志很多现场已经没了。直接内存还要结合分配速率看。总量稳定但分配释放非常频繁可能带来额外 CPU 开销和延迟抖动总量缓慢上涨则更像泄漏或池化策略失控。只看某一时刻的使用量判断会不完整。在 Netty 场景里要关注 allocator 指标。Arena 数量、chunk 使用率、active direct memory、ByteBuf 泄漏检测日志都能提供线索。开发环境可以提高 leak detector 级别生产环境则要权衡性能开销。最后压测要覆盖大包、慢客户端和连接抖动。直接内存问题经常在网络传输压力下暴露普通小请求压测可能完全看不出来。排障要复现场景不能只在低压环境里看指标。还要关注容器的内存统计口径。应用看到的 JVM 指标可能都正常但 cgroup 里的memory.current已经逼近限制。监控面板要同时展示 JVM 内部指标和容器外部指标否则容易得出“JVM 没问题”的错误结论。直接内存上限也不能盲目调大。调大可以缓解短期 OOM但如果根因是泄漏最终只是延后事故。正确顺序应该是先确认增长曲线和分配来源再决定是修复释放、调整池化还是扩大容量。JVM 直接内存监控还需要关注被误解的指标。很多团队看到free -m显示大量 free 内存就认为系统内存充足但实际上可能已经发生了 swap或者内存碎片导致无法分配连续空间。在容器环境里/proc/meminfo和 cgroup 内存统计的口径也不同需要明确监控工具读取的是哪个数据源。建议同时在三个层面采集内存指标JVM 内部NMT、堆外统计、容器层面cgroup memory.current、memory.high、节点层面node exporter 或类似工具三者对比才能发现JVM 认为没问题但容器已经快超限的情况。另一个容易被忽视的问题是内存回收的延迟性。DirectByteBuffer 的回收依赖 GC 和 Cleaner 机制如果堆 GC 不频繁堆外内存可能长时间无法释放。这种现象在堆很大、对象分配率很低的服务里尤其明显堆还很空但直接内存已经快用完。解决思路包括主动调用System.gc()不推荐但在某些场景下是实用手段、调整直接内存的 Cleaner 触发逻辑、或者在应用层实现显式的缓冲区回收机制。监控时需要同时关注堆使用率、直接内存使用量和 GC 频率才能定位这类问题。五、总结JVM 内存排障不能只盯 Java 堆。直接内存、线程栈、Metaspace 和 native 区域都会影响进程 RSS。容器环境下堆没满也可能被杀。把堆内和堆外指标一起监控才能真正解释内存事故。

相关新闻

缓存命中率99%!深挖Reasonix源码,吃透DeepSeek前缀缓存最佳实践

缓存命中率99%!深挖Reasonix源码,吃透DeepSeek前缀缓存最佳实践

文章目录前言DeepSeek 的缓存机制:一个无情的字符串比较器Reasonix 的"记忆约束":不动前缀,动尾巴XML 拼接:把变化赶到 prompt 的尾巴上协议层防 cache miss:DeepSeek 的 thinking 模式陷阱工程纪律&#xf…

2026/7/7 1:31:54 阅读更多 →
2026年7月南京小程序开发公司哪家好?定制开发推荐与排行参考

2026年7月南京小程序开发公司哪家好?定制开发推荐与排行参考

南京企业做小程序,常见的需求集中在企业服务、教育培训、园区服务、客户管理、移动审批和项目协同。业务员、客户、项目人员和管理层往往分别使用不同工具,移动端若只是把PC页面搬过来,很难真正提高使用效率。。 一个小程序能不能长期使用&am…

2026/7/7 1:31:54 阅读更多 →
Windows Alt 特殊字符输入完全指南:从 Ñ 到 ∞,一篇搞定所有符号

Windows Alt 特殊字符输入完全指南:从 Ñ 到 ∞,一篇搞定所有符号

摘要:你是不是经常遇到这种情况——想输入西班牙语中的 ,却不知道键盘上怎么打?写数学论文时找不到 ≠ 和 ∞?做财务报表时 € 和 £ 总是靠复制粘贴?本文将为你彻底讲透 Windows 系统下 Alt 代码的输入原理、完整…

2026/7/7 1:27:53 阅读更多 →

最新新闻

2026 供应商关系管理系统排行榜前十强,选型必看

2026 供应商关系管理系统排行榜前十强,选型必看

选对供应商关系管理系统,是采购数字化落地的核心前提,也是企业最容易踩坑的环节。流程脱节、版本锁死、数据孤岛,大量 SRM 项目上线半年便形同虚设,实际价值远不及预期。 据 IDC 2025 年《中国供应资源管理软件市场份额报告》测算…

2026/7/7 2:30:10 阅读更多 →
技术人做个副业有多难?发个服务帖被限流三次后,我换了个思路

技术人做个副业有多难?发个服务帖被限流三次后,我换了个思路

前阵子做了个小工具,想在一些平台上发帖推广一下,结果挺沮丧的。 发到A平台,提示"内容含推广信息,建议付费推广"→ 限流。 发到B平台,帖子发出去自己都搜不到,过两天再看——被删了,理…

2026/7/7 2:28:10 阅读更多 →
企业级开源AI 智能代码评审系统,一键部署,真正解决代码质量问题

企业级开源AI 智能代码评审系统,一键部署,真正解决代码质量问题

AI Code Review开源企业级 AI Code Review 系统,支持 Claude、Codex 等主流模型,一键部署、开箱即用,自动代码审查,企业微信、邮件通知。开源地址:https://github.com/743144627/ai-code-review.git目录结构backend/ F…

2026/7/7 2:26:09 阅读更多 →
Uber 如何规模化数字身份验证:从 Apple Wallet 证件到跨场景 Identity Verification Platform

Uber 如何规模化数字身份验证:从 Apple Wallet 证件到跨场景 Identity Verification Platform

本文是对 Scaling Verify with Wallet for Identity Verification at Uber 的整理与翻译。 内容结构概览 本文会围绕 Uber 如何将 Apple 的 Verify with Wallet API 接入并规模化到自己的身份验证平台展开,主要包括: 为什么身份验证是 Uber Trusted Id…

2026/7/7 2:24:09 阅读更多 →
Docker run/exec/attach 命令区别 + 容器资源限制实战

Docker run/exec/attach 命令区别 + 容器资源限制实战

第4章 容器 摘要: 本章全面介绍了 Docker 容器的核心概念与操作实践。内容涵盖容器生命周期管理(创建、启动、停止、重启、暂停、删除)、资源限制(内存、CPU)、容器导入导出以及底层实现技术。重点讲解了 docker run、…

2026/7/7 2:24:09 阅读更多 →
本地AI图像视频生成工具部署指南:从环境配置到批量任务实战

本地AI图像视频生成工具部署指南:从环境配置到批量任务实战

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这次我们来看一个本地部署的AI图像和视频生成工具,从标题看它声称能"吊打"市面上的同类产品,支持免…

2026/7/7 2:24:09 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻