linux c 多线程内存一直增长,为什么我的C程序的内存使用量会持续增长?

news/2024/11/25 21:20:48/

我是Linux和C的新手,对我的应用程序的内存使用情况有疑问.

我的应用程序处理大量实时数据,每秒约500条消息.

我使用std :: map来管理(即插入和擦除)所有消息.例如,

std::map m_map;

// when receive a new message, convert the message into a data structure

m_map.insert(std::pair(message.id, data));

// when need to erase a message

iter = m_map.find(id);

if (iter != m_map.end()) {

m.map.erase(iter);

}

m_map的大小大约是2500,即,应用程序在开始时接收很多新消息,然后逐渐需要擦除消息.大约10秒后,它达到了一个点,即收到的新消息数与需要删除的消息大致相同.

我的问题是,大约20分钟后,在Linux系统监视器中,我注意到我的应用程序使用的内存大约是1GB.而且看起来每20分钟翻一番.这是正常的,应用程序真的使用了那么多内存吗?我在这里错过了什么吗?

谢谢.

解决方法:

如果您的程序经常分配和释放内存块,那么您将得到fragemtation – 操作系统只能做很多事情来确保您分配的内存块之间没有间隙.但一般来说,由此产​​生的内存使用量将达到稳定水平.

如果程序的内存不断增加,则会出现内存泄漏 – 要么忘记删除对象(或者在C风格分配的情况下调用free()),要么将对象累积到容器中而忘记删除它们.

要查找丢失的删除呼叫,请使用valgrind!

使用valgrind检测内存泄漏就像使用您喜欢的包管理器安装然后运行一样简单

valgrind my_program

您的程序将运行,当它完成时,valgrind将转储一份非常详细的内存泄漏报告及其来源,包括完整的堆栈跟踪.

valgrind太棒了.

标签:c-2,linux,memory

来源: https://codeday.me/bug/20190712/1444419.html


http://www.ppmy.cn/news/164007.html

相关文章

揭秘虚拟直播:3D场景与2D背景的区别

虚拟直播是指通过技术手段创造出虚拟场景,将主播或演员放置其中进行实时直播的一种形式。这种直播方式结合了虚拟现实(VR)、增强现实(AR)和实时渲染等技术,近年来,随着VR和AR技术的不断成熟和普…

table表格排序,@sort-change=“sortChange“ 取消排序

table表格排序,sort-change"sortChange" 取消排序 点击的单个进行排序时,要求isAsc对应当前字段的排序顺序;值ascending,descending,null三种情况;若指定了列对应的prop,没有指定order的话,默认ascending; desc降序,asc升序,当点升…

Ubuntu22.04 VirtualBox

Ubuntu22.04 VirtualBox 通常三种虚拟机网络连入模式 桥接网卡 虚拟网卡连入宿主机所在的路由器,公用一个网关地址,自动分配路由器ip到虚拟网卡上,相当于和物理机一样的地址,在同一网段,其他物理机和这个虚拟机一样…

【插本上岸】2023年打工与努力读书的上半年

一、成功上岸 发一下成绩啦,很久就知道成绩了,过完61后来发一个半年感悟。不敢相信自己也能排在头头呀🌞🌞 俺是退役士兵批的 然后真的很幸运。22年改革后退役士兵分开招生,虽然也很卷,但是努力和得到的是成…

一、RAID磁盘阵列介绍

文章目录 一、RAID磁盘阵列介绍1.1、RAID 01.2、RAID1磁盘阵列介绍RAID 11.3、RAID 5磁盘阵列介绍1.4、RAID 6磁盘阵列介绍(生产环境中用的极少)1.5、RAID 10磁盘阵列介绍 二、阵列卡介绍三、阵列卡的缓存四、实验 一、RAID磁盘阵列介绍 是Redundant Array of Independent Dis…

[RAID与磁盘阵列] IBM Ds5300 8Gb光纤阵列评测

性能不仅是一串枯燥的数字,可扩展性也不能停留在一个很虚无的概念。对一款中端存储系统而言,要兼顾性能和可扩展性并不是很难,前提是必须有一个设计合理、功能强大的内部架构。IBM System Storage DS5300做到了,因此,它…

基于IBM DS4500 磁盘阵列的配置实验

基于IBM DS4500磁盘阵列的配置实验 原文:http://blog.csdn.net/xl_xunzhao/archive/2009/03/03/3953908.aspx 本文PDF版下载地址:http://download.csdn.net/source/1064714 xunzhao的博客已搬家至:http://xunzhaoxz.itpub.net 实验目的&…

raid磁盘阵列分析

raid1 raid2 raid5 raid6 raid10五种raid冗余磁盘阵列史上最全解析 一、什么是Raid?它有什么作用? 1、什么是Raid raid就是冗余磁盘阵列,通常称作「磁盘阵列」的RAID (Redundant Array of Independent Disks)功能,多半是应用在NAS…