专栏名称: 阿里云开发者
阿里巴巴官方技术号,关于阿里的技术创新均将呈现于此
目录
今天看啥  ›  专栏  ›  阿里云开发者

8G的容器Java堆才4G怎么就OOM了?

阿里云开发者  · 公众号  · 科技公司  · 2025-01-22 08:30
    

主要观点总结

本文主要描述了一个Java应用OOM问题的排查过程,涉及到Java堆外内存的监控、分析和定位。应用中存在多个ClassLoader加载了netty的PooledByteBufAllocator,导致实际使用的堆外内存超出限制。排查过程中使用了多种工具和技术手段,包括NativeMemoryTracking、jemalloc参数调整、perf监控等。最终通过静态变量分析确定了netty占用的内存大小,并指出了问题的根本原因。

关键观点总结

关键观点1: 问题描述

Java应用出现OOM问题,初步分析发现堆外内存使用异常,实际使用量超过预期。

关键观点2: 排查过程

使用NativeMemoryTracking监控内存分类占用信息,发现Other部分内存可疑增长;通过静态变量分析确定netty占用的内存大小。

关键观点3: 问题分析

中间件中多个不同的ClassLoader加载了多个netty的PooledByteBufAllocator,每个Allocator都有自己的内存配额,导致实际使用的堆外内存超出限制。

关键观点4: 解决方案

短期内通过调整Java堆大小以适应现状;长期内考虑优化rocketmq-client的内存占用,并与中间件同学沟通解决问题。


免责声明

免责声明:本文内容摘要由平台算法生成,仅为信息导航参考,不代表原文立场或观点。 原文内容版权归原作者所有,如您为原作者并希望删除该摘要或链接,请通过 【版权申诉通道】联系我们处理。

原文地址:访问原文地址
总结与预览地址:访问总结与预览
推荐产品:   推荐产品
文章地址: 访问文章快照