嵌入式Linux优化


1. cat /proc/meminfo 得知内存状况

2. 写时分配,malloc时尚未分配,strcpy或其他操作时再予分配

3. cat /proc/<pid>/statm 得知进程的内存页面状况

#cat /proc/6277/statm

6020 2253 1602 78 0 458 0

虚空间 物理内存 共享页数 可执行虚存大小 被映像到任务的虚存空间库大小 程序数据段及用户态栈大小

4. cat /proc/<pid>/maps 看各地址对应的文件/动态库( 代码段-只读可执行,堆段-可读写,栈段-向上增长至0xC00000000 )

5. cat /proc/<pid>/memmaps( cat /proc/<pid>/smaps )  看虚存对应物理内存状况

6. malloc得到的ptr之前4个字节系chunk结构,包括前一块的大小,自身大小,标志位

7. 标志位关注上一块正在被使用与否,或是否通过mmap分配得到

8. 一次malloc分配至少16字节,8字节对齐,分配20字节的话会得到24字节

9. glibc中,1G以内空间的管理由brk负责,大于1G则由mmap方式负责

10. 对小块内存将不去尝试合并

11. 小块内存的定义可由#include <malloc.h> int mallopt(int param, int value) 定义

12. param 通常取值为M_MXFAST,缺省值为64

相关内容