mmap引起的内存泄漏分析

最近遇到一个内存泄漏问题,由于问题出现在客户端,只能通过客户提供的Log来分析。

根据客户提供的/proc/meminfo数据发现,MemAvailable 由294072kB减小至18128kB,减小约269MB,引起该变化的最直接原因是PageTables由61416KB增加到了334460kB,增加约266MB。同时观察Aon和Slab的变化,均未出现明显的增加,由此可判定,内存单纯的消耗在了PageTables项了。

 查看PageTables项的统计来源:

通过以上代码可知,PageTables主要统计的就是创建页表所消耗的内存。

只有PageTables一项变大 这个比较奇怪。一般来说,映射了页表肯定会去申请一段内存,如果是内核申请的,那对应slab/vmalloc的值会变大;如果是用户态申请的,那么anon值应该会变大,现在这两项都没有变大 那有可能是对同一段地址做了重复的mmap 或者ioremap操作,这样就只会消耗pagetable。
为进一步分析,让客户提供了/proc/vmallocinfo信息,发现ioremap的次数并不多,所以推测可能是用户态做了重复的mmap映射,并让客户自查代码。

最终根据客户的反馈,其用户态代码在mmap后未执行munmap,导致了内存泄漏。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/27113.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CTFshow-web sql注入

Web171 1 在题目中可以看到查询语句为 "select username,password from user where username !flag and id ".$_GET[id]." limit 1;"; 直接使用万能密码 查到了所有用户 获得flag Web172 0 可以看到返回逻辑显示 如果返回的查询数据中username不等于fl…

Linux基础IO【II】真的很详细

目录 一.文件描述符 1.重新理解文件 1.推论 2.证明 2.理解文件描述符 1.文件描述符的分配规则 3.如何理解文件操作的本质? 4.输入重定向和输出重定向 1.原理 2.代码实现重定向 3.dup函数 ​编辑 4.命令行中实现重定向 二.关于缓冲区 1.现象 …

Web应用安全测试-业务功能滥用(一)

Web应用安全测试-业务功能滥用(一) 1、短信定向转发 漏洞描述:短信接收人可任意指定 测试方法:拦截发送短信的请求,将手机号改为测试人员的手机号,测试是否可接收短信验证码。 风险分析:攻击…

echarts学习:使用dataset管理数据

前言 在我们公司的组件库中有许多echarts图表相关的组件,这些组件在使用时,只需将图表数据以特定的格式传入组件中,十分方便。因此当我得知echarts 可以使用dataset集中管理数据时,我就决定自己一定要搞懂它,于是在最…

c#动态执行计算语句

引用 nuget NReco.LambdaParser 示例 var lambdaParser new NReco.Linq.LambdaParser();var varContext new Dictionary<string,object>(); varContext["pi"] 3.14M; varContext["one"] 1M; varContext["two"] 2M; varContext["…

MYSQL5.7 切换datadir数据目录

众所周知&#xff0c;centos7操作系统mysql5.7采用安装方式部署的情况下&#xff0c;他的数据目录默认是在/var/lib/mysql&#xff0c;而其占用的是根路径对应的磁盘空间&#xff0c;一般服务器都是会额外外挂一个磁盘空间&#xff0c;理论上应该把数据目录放外挂的磁盘空间。否…

oracle 删除当前用户下所有表

荆轲刺秦王 通常呢 我们将正式环境的 oracle 数据库 导出成 dmp 文件&#xff0c;然后导入到测试环境或者本地环境&#xff0c;期间可能会出现各种问题。那么如何使错误的导入数据全部删除呢。可以这样做&#xff1a; 1. 本地虚拟机启动 oracle 服务 2. sqldeveloper 连接 o…

vue 安装依赖报错

解决方法&#xff1a; npm install --legacy-peer-deps 然后再运行项目即可。

LabVIEW利用旋转编码器脉冲触发数据采集

利用旋转编码器发出的脉冲控制数据采集&#xff0c;可以采用硬件触发方式&#xff0c;以确保每个脉冲都能触发一次数据采集。本文提供了详细的解决方案&#xff0c;包括硬件连接、LabVIEW编程和触发设置&#xff0c;确保数据采集的准确性和实时性。 一、硬件连接 1. 旋转编码…

Day37

Day37 综合案例 http请求方式有哪些&#xff1f; GET&#xff1a;请求指定的页面信息&#xff0c;并返回实体主体。这是最常见的请求方式&#xff0c;用于从服务器获取数据。 HEAD&#xff1a;类似于GET请求&#xff0c;只不过返回的响应中没有具体的内容&#xff0c;只有…

北斗应急通信手持终端如何在户外使用

北斗应急通信手持终端在户外的使用&#xff0c;需要遵循一定的步骤和注意事项以确保其高效、安全地运作。以下是一个清晰的使用指南&#xff1a; 一、准备阶段 检查电量&#xff1a;确保北斗应急通信手持终端的电量充足&#xff0c;并携带备用电源以应对长时间使用的情况。 熟…

Ubuntu系统设置中文输入法

重新设置超级用户权限(root)密码(非必要) sudo passwd root 需要注意的是Ubuntu的root密码不能少于8个字符 设置成功后输入命令和新的密码即可无需输入sudo启用root命令 su - 更新软件包列表 sudo apt update sudo apt upgrade 安装fcitx5输入法框架 个别情况需要卸载旧的…

红黑树【C++实现】

文章目录 红黑树的概念红黑树的性质红黑树的操作红黑树结点的定义红黑树的插入情况一&#xff1a;插入结点的叔叔存在&#xff0c;且叔叔的颜色是红色情况二: 插入结点的叔叔存在&#xff0c;且叔叔的颜色是黑色情况三: 插入结点的叔叔不存在 红黑树的验证红黑树的查找 红黑树的…

实现直流高电压(100Vdc~1000Vdc)检测的采样电路(隔离方案)

目前&#xff0c;在电力系统自动化领域、新能源电动汽车领域以及高压储能领域&#xff0c;经常需要采样、检测高压直流母线电压&#xff0c;一般直流高压可能达到100Vdc&#xff5e;1000Vdc&#xff0c;结合电路成本和采样精度&#xff0c;我们设计人员就需要选择合适的采样电路…

【elementui源码解析】如何实现自动渲染md文档-第一篇

文章目录 目录 背景 获取源码 代码分析 背景 之前基于vant3的源码开发过二次开发过组件&#xff0c;其中vant实现了将md文档渲染到界面上&#xff0c;有天突发奇想想知道这是如何实现的将md文档渲染到界面上的&#xff0c;因为平时开发中使用elementui占多数&#xff0c;所…

java线程池讲解!核心参数

创建方式 | 构造方法 Executor构造方法 存放线程的容器&#xff1a; private final HashSet<Worker> workers new HashSet<Worker>(); 构造方法&#xff1a; public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit uni…

利用Morph Studio平台免费生成AI视频教程和效果体验

今天体验一下生成AI视频平台&#xff0c;目前是免费的&#xff0c;但生成效果还是不错的,可以根据输入文字&#xff0c;或者上传图片&#xff0c;或者上传视频来自动生成视频。 访问官网&#xff0c;登录之后点击“create Library” &#xff0c;比如我建了一个“AI视频”的Li…

4S店试驾线上预约小程序源码系统 前后端分离 带完整的源代码包+安装部署教程

系统概述 这款 4S 店试驾线上预约小程序源码系统旨在为 4S 店和消费者提供便捷、高效的试驾预约服务。通过小程序&#xff0c;消费者可以轻松预约试驾&#xff0c;4S 店可以方便地管理预约信息&#xff0c;提高工作效率和服务质量。 代码示例 系统特色功能一览 1.便捷的预约流…

面向对象编程重载

系列文章目录 文章目录 系列文章目录前言一、重载&#xff08;overload&#xff09; 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了…

52.@NotNUll,@NotBlank,@NotEmpty的使用区别

1.NotNull 适用于基本数据类型(Integer&#xff0c;Long&#xff0c;Double等等)&#xff0c;当 NotNull 注解被使用在 String 类型的数据上&#xff0c;则表示该数据不能为 Null&#xff08;但是可以为 Empty&#xff09; NotNull(message "id不能为空", groups …