# :-: mate-indicators内核占用过高问题分析报告
| 适用范围 | 适用版本 | 人员 | 发布时间 | 文档版本 |备注 |
| --- | --- | --- | --- | --- |--- |
| 服务器操作系统 | V10-SP1、V10-SP2 | 王国武 |2022.3.4| V1.0|发布|
| 服务器操作系统 | V10-SP1、V10-SP2 | 张志勇 |2022.3.4| V1.1|模板调整|
### 经测试,该方案有效可行
*****
### 1.问题现象描述
桌面组件mate-indicators在长时间使用后发现有占用内存过高的情况,尤其是在某些用户场景,如频繁打开日历或不停点击日历等操作,会造成mate-indicators占用内存的迅速增长,且在长时间不操作的情况下,占用的内存不释放。
### 2.影响版本及触发条件
影响版本
V10-SP1-0711及以后版本
V10-SP2-0524版本
触发条件:
频繁打开日历或不停点击日历图形工具等操作
### 3.问题分析
从现象来看,mate-indicators在运行中未及时回收内存,长时间运行时,就出现了内存占用过高的现象。杀掉mate-indicators进程,重启后,发现占用内存显著降低,确定问题为内存泄漏。
为确定内存泄漏点,需要通过以下方法进一步分析。
重新启动mate-indicators进程,通过cat /proc/PID/smaps命令导出数据。根据问题出现的频率,在一天后再次导出该数据,对比两组数据,查找内存增长的地方,使用gdb将内存dump出来,通过hexdump或strings工具查看。

进一步对比代码,定位问题出在indicator-calendar.cpp中的static gboolean update_time(IndicatorCalendar *d)此函数内。

此函数归属于日历与时间组件,主要负责桌面右下角的时间。跟踪代码发现,在此函数结束时,有多个资源未释放。
对未释放资源进行分析,主要由部分字符串和1个GSettings指针等占用组成。在短时间内现象并不明显,只有在长时间运行或者mate-indicators被频繁调用时,会出现明显的内存泄漏现象。
### 4.问题影响
长时间运行后,mate-indicators占用的内存会多达几个G
### 5.问题修复
及时释放未释放的资源,同时优化日历组件的内存占用,在日历不显示时,销毁相应的日历组件,快速释放内存。
### 6.解决方案
升级mate-indicators至mate-indicators-20150918kord0ukui58-10.p07.ky10及以后版本。
- 常见问题
- 进入救援模式
- 进入单用户模式
- grub引导修复
- V10SP1-biosdevname解析
- 外设挂载和卸载
- audit关闭解决方案
- 终端无法切换
- 救援模式取数据
- 网卡更名操作
- 问题复现解决类
- xgboost复现解决步骤
- 激活类
- 麒麟服务器激活常用命令
- 服务器故障激活问题--须知
- 激活权限获得方式
- V10-SP系列服务器激活
- 银河麒麟高级服务器操作系统V7&V10激活手册
- shell脚本类
- 多网卡队列绑定CPU脚本
- 服务器健康检查脚本
- 服务安装配置类
- 银河麒麟高级服务器操作系统V10(sp1)安装手册
- LVM创建
- Chrony时间同步配置
- 搭建网络yum源
- PXE部署实施
- Man手册安装
- 部署VNC服务
- Kylin-Server-V10-SP1-0711-DNS服务单机部署文档
- 麒麟ks文件定制-封装iso文件
- iptables端口配置
- V10-SP1-aarch64安装jdk1.7
- 工具使用类
- cyclictest测试工具
- e2fsprogs工具介绍
- Logrotate工具说明
- nmon工具安装与使用
- 升、降级类
- rsyslog升级报告
- 性能优化类
- 日志轮转
- 大页内存与透明大页详解
- 优化磁盘IO调度方式
- core文件设置
- 分析报告类
- bond模式4协商不通排查
- audit内存泄露问题分析报告
- mate-indicators内核占用过高问题分析报告
- ansible问题-hostname以及lvol报错
- 关于Linux内存计算的说明
- 磁盘IO调度算法
- 硬件相关类
- 串口
- 网络相关类
- bond创建
- 在已配置好网络情况下添加路由
- 网卡配合网桥实现内网互通KVM虚拟机
- Bond模式4协商不通排查过程
- HA高可用
- kylin HA shell实践
- kylin HA概念性及shell使用
- 虚拟化
- KVM创建虚拟机(图形化操作)
- KVM创建虚拟机(命令操作)
- 容器类
- docker-runc升级
- docker基础镜像制作-服务器版
- 麒麟云平台
- USB3.0设备穿透方法(针对win10云主机穿透)
- 麒麟云平台开关机操作说明
- 技术演练
