目录
- 一.前言
- 二.什么是内存碎片
- 三.如何处理内存碎片
一.前言
这篇文章简单讨论一下C++如何处理内存碎片问题。
二.什么是内存碎片
所谓内存碎片就是系统中存在的不能供进程使用的小块内存,主要包括外部碎片以及内部碎片。
- 外部碎片:内存分配和回收的过程中产生的,夹杂在已分配内存之间的,不连续的小块未分配内存。
- 内部碎片:已经分配的,但是由于内存对齐导致的不会使用的小块内存。
三.如何处理内存碎片
C++中一般可以采用以下几种办法处理内存碎片。
- 关注内存对齐。
- 使用内存池技术。
- 使用对象池技术。
- 避免频繁分配以及回收内存。
- 避免内存泄漏。
- Linux系统中可以使用jemalloc或者tcmalloc,在内存碎片问题上,jemalloc和tcmalloc比默认的ptmalloc要友好。
这些处理办法的具体内容在这篇文章里就不展开了。