You need to enable JavaScript to run this app. 如何解读jeprof输出?Oracle JDK下Tomcat原生内存泄漏排查求助
优惠活动
大模型
产品
解决方案
定价
更多

如何解读jeprof输出?Oracle JDK下Tomcat原生内存泄漏排查求助

Java应用非堆内存持续增长排查记录

问题现象

  • 排查Java相关内存泄漏问题过程中,发现服务器空闲内存持续下降,最终触发通过Nagios配置的RAM告警
  • 初步核查确认内存泄漏不属于堆内存区域,但Tomcat进程的整体内存占用仍持续增长
  • 部署场景为EC2实例,单实例仅运行当前Tomcat应用,服务器总物理内存为4GB
  • 已留存排查过程参考资料:7天服务器整体内存趋势截图、7天应用堆内存占用趋势截图

已开展的排查动作

  • 堆内存泄漏专项排查:对堆内存开展全量分析未发现异常对象堆积,执行jcmd <pid> GC.run命令后,堆内存占用从2.8GB下降至约200MB,可排除堆内存泄漏的可能性
  • JVM关联内存区域全量核查:对照公开技术资料逐一核对Metaspace及其他JVM关联内存区域,未发现异常内存占用,参考核查资料包括JVM原生内存泄漏排查主题技术讲解、开源原生内存泄漏排查流程文档
  • 原生内存 profiling 接入:为定位原生内存分配异常,接入jemalloc开展原生内存数据采集,目前已采集到两份jeprof格式的输出结果
    • 当前存在的待解决问题:无法解读jeprof输出内容,也无法确认采集结果的准确性;同时待验证核心疑问:jeprof是否可适配Oracle JDK完成原生内存数据采集?

排查环境配置明细

  • JVM启动参数:设置Xmx=3072M、Xms=3072M(此前将Xmx/Xms调整为2048M配置时,应用内存持续增长的表现与当前完全一致)
  • JDK版本信息:采用jdk1.8.0_72,对应官方版本为Java(TM) SE Runtime Environment (build 1.8.0_72-b15)、Java HotSpot(TM) 64-Bit Server VM (build 25.72-b15, mixed mode)
  • jemalloc配置信息:采用jemalloc 5.2.1版本,profiling采集环境配置如下:
    • 动态库预加载配置:export LD_PRELOAD=/usr/local/lib/libjemalloc.so
    • 采集参数配置:export MALLOC_CONF=prof:true,lg_prof_interval:31,lg_prof_sample:17,prof_prefix:/opt/jemalloc/jeprof-output/jeprof

内容的提问来源于stack exchange,提问作者Thuwan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.03 18:36:09