The client heap memory usage is too large (客户端内存占用过大)
Author: nathanchouiCreated Jun 30, 2022Updated Aug 3, 2026
Labelsarea/performance
Issue Description
Type: feature request
Describe what happened (or what feature you want)
客户端集成到服务以后,通过对比接入前与接入后的监控信息发现,接入sentinel后内存占用明显升高。
平均内存占用增加350MB,峰值内存占用增加900多兆,并且主要集中在老年代。
通过分析jvm dump文件,占用内存较大的几个对象是:com.alibaba.csp.sentinel.node.metric.MetricNode、java.util.concurrent.atomic.LongAdder、com.alibaba.csp.sentinel.slots.statistic.base.WindowWrap等。

Describe what you expected to happen
作为一个微服务,这些内存占用有些难以让人接受,希望能尽量减少内存的占用。
How to reproduce it (as minimally and precisely as possible)
- MetricNode对象的生成主要来自控制台拉取日志时,客户端读取metric日志,转换成了MetricNode对象。从阅读源码可知,读取日志时,将String转换为MetricNode,再将MetricNode转换成String。是否多此一举,直接将日志发给控制台即可?这样可以减少很多对象的创建以及内存占用。
- 其它几个高占用对象,粗略看了下源码发现,几乎来自于StatisticSlot中,用来统计resource信息的。不知后续这块是否会有优化计划。如果短期没有,希望给与我一些提示,从哪些角度去优化。从业务角度出发,我能想到的是,通过设置resource白名单,减少对一些不重要的接口做统计,尽量减少内存占用。
Tell us your environment
sentinel 1.8.2 openjdk 1.8 springboot 2.x
Anything else we need to know?
控制台每隔十秒从客户端拉取meteic信息。
Source: alibaba/Sentinel