首页 > 系统相关 >Linux程序内存释放不回收问题

Linux程序内存释放不回收问题

时间:2023-04-13 18:55:25浏览次数:42  
标签:释放 程序 业务 回收 内存 测试 Linux

最近在测试一个程序,内存表现很诡异,记录一下。

测试环境:vmware虚拟机,操作系统:ubuntu 16.04 x64

程序中有一段业务需要申请大块内存,业务完成后再释放掉。

测试表现:程序启动占用内存约90M,执行一次业务后,内存增长约200M,且不回落,这样约5次后,内存增长到约1G后趋于稳定。

开始感觉有内存泄漏,使用valgrind工具检测没有找到异常点,又仔细检查了几遍代码,确认申请的内存已经释放(释放处增加日志输出可以证实执行)。

后来怀疑是操作系统原因,但是苦于没有证据。最后找到这篇文章:https://blog.csdn.net/kelsel/article/details/52758277

为了验证是glibc内存管理机制导致的,在程序中做了两次验证:

1,使用mallopt函数设置阀值,结果测试没有效果;

2,使用malloc_trim(0)函数强制释放空余空间,测试效果是每次业务之后,内存可以降到105M左右,并且长时间测试(大于4小时)内存表现一致。

所以证实是linux内存管理机制导致的内存增长,不过程序内存增长到一定程度后稳定倒不影响业务。

另外比较诡异的是不同的程序,内存增长的程度不一样,这点没有深究。

标签:释放,程序,业务,回收,内存,测试,Linux
From: https://www.cnblogs.com/strongbug/p/17316028.html

相关文章

  • linux入门3
       1.显示/etc/passwd的前15行内容[root@blueendingnovaxiang]#head-15/etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/s......
  • LINUX grep sed awk genek
    grep-o'^>\S\+'test.fasta|less-Sgrep-o'^>\S\+'test.fasta|grep-o'[^>]\+'sed中的正则表达式echo-e"AB\n\nC\tD\n\nE">testfile#查看格式vitestfile:setlist#删除空行sed'/^$/d'testfile......
  • 查看linux进程/线程跑在哪个cpu核上
    方法一:使用top-Hppid然后按f,选择p,然后esc就行了方法二: psH-opid,lwp,psr,comm -p11115psr对应系统cpu线程号......
  • linux开发之Make
    简述代码变成可执行文件,叫做编译(compile);先编译这个,还是先编译那个(即编译的安排),叫做构建(build)。Make是最常用的构建工具,他根据makefile来行动。makefile是一个名字叫Makefile(或makefile)的文件,它一堆规则的定义,它定义了具体该怎么编译,链接等操作。当源代码有几十上百时,手动输......
  • windows上编写shell拷到linux执行报错
    1.最近随手在windows写了个自动安装docker的shell脚本,然后传到linux服务器执行竟然报以下错  2.进入vim查看突然看到下截图红色框地方 最后查阅资料发现,这个标志的产生原因是因为在windows下,文件的换行符是\r\n,而在linux下换行符是\n,所以,使用cat-Ainstall_docker.sh......
  • linux入门2
       1.创建链接文件xiang指向hunan[root@blueendingnovalianxi]#mkdirhunan[root@blueendingnovalianxi]#ln-shunanxiang[root@blueendingnovalianxi]#llxianglrwxrwxrwx1rootroot54月1315:43xiang->hunaln   创建链接文件  link 可以给文......
  • [Linux]veth是什么?
    vethpair是什么?vethpair(VirtualEthernetPair)是一种Linux内核技术,可用于将两个虚拟网络接口连接在一起,从而可以在两个不同的命名空间之间进行通信。它常常被用于容器的实现,比如Docker中的容器网络,以提供网络隔离和互联。vethpair包括两个虚拟网络接口,这两个网络接口......
  • linux操作系统和linux内核
    linux内核并非操作系统,是操作系统的基本,负责对计算机硬件进行管理,并且提供了使用这些硬件资源的通用接口。主要管理如下几个方面:1. 内存管理:追踪记录有多少内存存储了什么以及存储在哪里2. 进程管理:其实就是对cpu的管理,即确定哪些进程可以使用中央处理器......
  • [Linux]有哪些常见的System Call?
    Linux中有许多Systemcall,以下是其中的一些常见的Systemcall:open:打开一个文件close:关闭一个文件read:从文件中读取数据write:将数据写入文件lseek:控制文件位置指针fcntl:操作文件描述符标识socket:创建一个套接字connect:建立一个连接bind:将一个套接字绑定到一个地址lis......
  • tinymix使用 嵌入式linux tinyplay控制音频
    tinymix控制声音大小使用方法使用字符方式保险  tinymix"LINEOUTvolume""2"有的是输入int但是此处输入输入int时,不行,使用字符串输入可以正常修改 输入tinymix查看选项和使用方法 root@/test_utils/alsa#tinymixMixername:'audiocodec'Numberofcontrols:......