linux 内存碎片处理

发布时间 2023-12-20 15:17:53作者: 蔡头一枚

Linux内存碎片化主要由于内存的分配和释放不均匀导致,会降低内存利用效率。可以通过以下方法对Linux内存进行碎片整理:

执行sync命令:该命令会强制将内存中的脏数据写回磁盘,释放内存。这可以腾出较大的连续内存块,减少碎片。
执行echo 1 > /proc/sys/vm/drop_caches命令:该命令会清除页面缓存,释放被缓存的数据所占用的内存,减少内碎片。
执行echo 2 > /proc/sys/vm/drop_caches命令:该命令会清除页面缓存和目录项缓存,释放更多内存,进一步整理内存碎片。
执行echo 3 > /proc/sys/vm/drop_caches命令:该命令会清除页面缓存、目录项缓存和inode缓存,彻底清空缓存占用的内存,最大限度减少内存碎片。

执行malloc_trim命令:该命令会把仍有使用但释放的内存块归还给操作系统,然后操作系统可以把这些内存块重新整合,减少内存碎片。

代码中使用 malloc_trim(0) 对部分内存进行回收

增加swappiness的值:该值控制内核换出内存的相关策略,增加其值可以提高内核主动换出内存的可能性,从而整合更大的连续内存块,减少碎片。
重启系统:系统重启后会清空大部分缓存,并根据需要重新整理和配置内存,可以最大限度减少内存碎片。但重启也会中断系统服务,需要视情况而定。
优化程序内存分配:程序应避免过度分配或不释放内存,这会加剧内存碎片。应根据实际需要合理分配和及时释放内存。
除此之外,还可以安装一些专门的内存碎片整理工具,如Compact或Ramster,它们可以定期帮助整理内存,提高内存利用效率。

原文链接:https://blog.csdn.net/maoyikun/article/details/130168474