一次进程虚拟内存占用超过200G问题分析

在对智驾软件系统资源进行分析时,发现一个进程虚存占用过高,超过200G

top查看内存占用

有一个node应用占用了200G的虚拟内存

pmap查看该进程内存情况

pmap -x -p 8496

结果显示有两个异常点,刚好和虚存使用总量吻合

一个50G和一个170G的堆内存占用(anon指的是匿名映射,一般是通过malloc或者mmap分配的堆内存)

采集堆内存状态

使用valgrind Massif堆内存分析工具获取进程的定期堆内存状态

# 先安装valgrind工具:apt-get install valgrind
# 然后通过valgrind启动app
valgrind --tool=massif --time-unit=B ./bin/app_node --flagfile=./config/gflags.conf

按ctrl+c采集结束后会生成一个采集文件

文件以massif.out开头

分析数据

方式一:命令行下查看数据

ms_print massif.out.4025

方式二:使用massif-visualizer可视化界面更直观查看

安装massif-visualizer

# 安装可视化工具
sudo apt-get install massif-visualizer

打开massif-visualizer

导入采集文件

通过 Massif Data一栏中的调用关系可以定位到分配大量内存的函数

上面的图显示了函数每层分配的内存总量

下面的图展示了内存对时间的变化

至此,已经找到问题点

总结

  1. 一次性分配大块内存的,可通过gdb单步骤执行快速确认具体位置

  2. 持续小内存分配逐渐增长的,借助工具采集数据分析

关注非科班程序员,一起学习,一起进步

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是BIOS,如何进入BIOS设置?

什么是BIOS,如何进入BIOS设置?标题 🖥️ 什么是BIOS,如何进入BIOS设置?——默语的深入解析摘要引言正文内容🧩 什么是BIOS?🔧 如何进入BIOS设置?⚙️ 常见的BIOS设置选项…

将json对象转为xml进行操作属性

将json对象转为xml进行操作属性 文章目录 将json对象转为xml进行操作属性前端发送json数据格式写入数据库格式-content字段存储(varchar(2000))Question实体类-接口映射对象QuestionContent 接收参数对象DAO持久层Mapper层Service层Controller控制层接收…

6月26日-时间记录和统计

首先,我们根据你提供的时间记录,将活动进行分类并计算每个类别的持续时间,然后计算它们各自所占的百分比。以下是具体的分类和计算步骤: 1. **思想活动**: - 持续时间:15分48秒 2. **学习活动**&#xff1a…

Java代码基础算法练习-计算看完一本书的天数-2024.06.29

任务描述: 一本书有 n 页,小明第一天看 1 页,以后每天都比前一天多看 2 页,计算小明看完整本书 需要多少天? 解决思路: 每天都比前一天多看 2 页,输入的页数 n 为判断标准,while 循…

堆排序思想分享

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

SAP ATP可用性检查简介

Availability Check,就是可用性检查,指的是要检查一下此物料是否能满足我的需求。 接到一张销售订单(SALES ORDER),客户要求数量为100PC,并且客户要求的出货日期是2024-07-01,此时我们的销售人员肯定会想到底能否出货给客人呢?系统中建立此单时,SAP就会做一个所谓的检…

一键掌控,文件格式转换无忧!轻松驾驭各种文件格式,高效管理您的数字世界

信息爆炸的时代,我们每天都会接触到各种各样的文件格式。无论是工作文档、图片、视频还是音频文件,它们都以不同的格式存在于我们的电脑和移动设备中。然而,不同的软件和应用往往只支持特定的文件格式,这给我们的工作和生活带来了…

Petal-X :心血管疾病临床风险可视化工具

心血管疾病(Cardiovascular diseases, CVDs)是全球致死的首要原因,但在大多数情况下,它们是可以通过行为干预来预防的。因此,在个体层面上,有效地传达心血管疾病的风险以及通过风险因素的修改来预计风险降低…

【股指期权投教】一手股指期权大概多少钱?

一手股指期权的权利金大概在几千人民币左右,如果是作为期权卖方还需要另外缴纳保证金的。国内的股指期权有三种,沪深300、上证50、中证1000股指期权,每点合约人民币100 元。 期权合约的价值计算可以通过此公式得出:权利金的支付或…

一块KT板带来4.9万MGV,抖捧AI自动直播真有这么好?

相信大多数做抖音本地生活的朋友都了解,目前本地生活团购带货的方式主要分为两种,一种是短视频带货,由探店达人到店里打卡,然后拍视频发布到自己账号,同时挂载商家的门店定位或团购链接,用户可以直接在视频…

awk的用法

目录 awk简述 awk的用法 选项 内置变量 命令格式 打印行号 打印指定行 打印奇偶行 按行取列 BEGIN打印模式 乘法计算 awk -v 变量赋值 awk的条件判断 面试题awk的三元表达式 awk的精确筛选 逻辑且、或关系 awk做小数运算 curl 练习 1.获取其中的所有子域名…

WebSocket 连接失败的原因及解决方法

WebSocket 目前已经成为了一项极为重要的技术,其允许客户端和服务器之间进行实时、全双工的通信。然而,在实际项目中,开发者时常会遇到 WebSocket 连接失败的情况。这不仅影响了用户体验,还可能导致不可预见的系统错误或数据丢失。…

字节码编程ASM之插桩调用其他类的静态方法

写在前面 源码 。 本文看下通过ASM如何实现插桩调用其他类的静态方法。 1:编码 假定有如下的类: public class PayController {public void pay(int userId, int payAmount) {System.out.println("用户:" userId ", 调用…

mybatis框架介绍 , 环境的搭建和代码实现

1.mybatis框架介绍 mybatis框架介绍 mybatis是Apache软件基金会下的一个开源项目,前身是iBatis框架。2010年这个项目由apache 软件基金会迁移到google code下,改名为mybatis。2013年11月又迁移到了github(GitHub 是一个面向开源及私有 软件项目的托管平…

kafka--发布-订阅消息系统

1. Kafka概述 1. kafka是什么 kafka是分布式的、高并发的、基于发布/订阅模式的消息队列软件系统。 kafka中的重要组件 Producer:消息生产者,发布消息到Kafka集群的终端或服务Consume:消费者,从Kafka集群中消费消息的终端或服…

GPT-5

欢迎来到 Papicatch的博客 文章目录 🍉技术突破预测 🍈算法进步 🍈理解力提升 🍈行业推动力 🍉人机协作的未来 🍈辅助决策 🍈增强创造力 🍈复杂任务中的角色 🍈人…

构建以caffeine为L1,Redis为L2的多级缓存

🏃‍♂️ 微信公众号: 朕在debugger© 版权: 本文由【朕在debugger】原创、需要转载请联系博主📕 如果文章对您有所帮助,欢迎关注、点赞、转发和订阅专栏! 前言 S(Situation):业务代码与缓存…

RK3588 Android13 TvSetting 中增加 WebView 切换菜单

前言 电视产品,客户要求在设置中设备偏好设置子菜单下增加一个 WebView切换菜单,一开始不知道怎么下手,后来想起来在设置开发者选项里有一个类似的菜单, 去把实现逻辑搞出来应该就ok。 效果图 TvSetting 部分修改文件清单 packages/apps/TvSettings/Settings/res/values…

改机软件有哪些?实现一键新机、改串号、改IMEI和手机参数的需求 硬改手机软件,新机环境模拟 设备伪装,一键改机,一键复原

这次针对可以直接开端口修改参数的机型做一些工具解析 前面接触合作过很多工作室。其中很多工作室对于各自软件的跳验证有各自的需求。 一个机型各项参数一般有IMEI WiFi 蓝牙 sn psb ESN等等。 针对这些参数的修改首先要明白各自软件检测的具体是哪些参数来验证。 对于常用…

在Ubuntu上配置PPPoE服务:从安装到自动化启动的全指南

在Ubuntu上配置PPPoE服务:从安装到自动化启动的全指南 PPPoE(点对点协议以太网)是一种广泛用于DSL和光纤宽带连接的协议。在本篇技术博客中,我们将详细介绍如何在Ubuntu系统上配置PPPoE服务,包括安装、配置、启动以及…