AIX 进程内存分配与回收策略及应用开发建议.docx
《AIX 进程内存分配与回收策略及应用开发建议.docx》由会员分享,可在线阅读,更多相关《AIX 进程内存分配与回收策略及应用开发建议.docx(33页珍藏版)》请在优知文库上搜索。
1、目录1.AlX内存分配回收策略1.1 内存分配观察示例一递增分配1.2 内存分配观察示例一递减分配1.3 针对长逐行程序的空闲内存回收1.4 mallopt示例11.5 mallopt示例21.6 内存回收disclaim策略1.7 disclaimdisclaim64代码示例1.8 内存碎片对内存回收的影响1.9 通用建议2 .内存监控2.1 观察系统中内存占用最高的进程2.2 寻找内存持续增长的进程2.3 如何通过共享内存ID对应关联到该共享内存的进程2.4 如何获取AIXKernel的内存使用率2.5 如何判断系统是否存在内存不足3 .应用开发工具3. Idbx使用以及coredump定
2、位3.2 内存非法使用检查3.3 内存泄漏检查(report_allocations)3.4 内存泄漏检查示例3.5 proctools介绍3.6 probevue介绍如何将C文件与汇编文件对应1.AlX内存分配回收策略一般而言,系统会直接在进程空间的free列表中维护其free释放的内存,以供后续新的分配直接使用,这样可以提高分配效率,不需要每次内存分配都经过系统内核。进程退出后,系统会回收该进程占用的全部内存。注:选择不同的分配策略时,对空闲内存空间的管理策略会有所差异。例如默认的管理结构是CarteSian树;而采用WatSon分配算法时,使用的管理结构是红黑树。Cartesian笛卡尔
3、树参考结构:DeaeasrglengthsROOTInereaSngaddresses1.1 内存分配观察示例一递增分配进程的详细内存分配情况可以使用SVmon来观察,参考如下示例。需要注意,为方便svmon观察,示例代码需要在malloc之后调用memset进行初始化;因为操作系统实际上并不会立即对已申请但尚未访问到的内容分配实际存储空间,而是推迟到第一次访问时才会实际分配一这即是缺页机制的工作原理。如下是一个申请空间递增的应用,分配/释放大小为2MB-4MB-8MB-16MB,则通过各阶段的svmon可以看到,内存页面会持续增长,从2MB一直增力口到16MB(注意不是2MB+4MB+.+1
4、6MB=30MB)oManOC分配2MB,未初始化时:rtanzga:/#svmon-11rP909436PidCommandInusePinPgspVirtual64-bitMthrd16MB909436testm165848841727YNNVsidEsidTypeDescriptionPSizeInusePinPgspVirtual2cba711worktextdataBSSheaps2002AddrRange:0.512839b2ffffffffworkapplicationstacks2002AddrRange:65534.65535AddressRange为0512页,即代表512
5、4096=2MB虚拟地址空间。VirtUaI取值为2,表示该空间尚未实际分配。初始化后:2cba711worktextdataBSSheaps51300513AddrRange:0.512VimIaI取值为513,表明虚存空间已经实际分配。释放之前申请的2MB,重新申请4MB并初始化后:2cba711worktextdataBSSheaps1025001025AddrRange:0.102410244096=4MB,此前释放的512页虚拟地址空间被重复利用。释放之前申请的4MB,重新申请88MB并初始化后:2cba711worktextdataBSSheaps2049002049AddrRan
6、ge:0.2048此前释放的1024页虚拟地址空间被重复利用。释放之前申请的8MB,重新申请16MB并初始化后:2cba711worktextdataBSSheaps4097004097AddrRange:0.40961.2 内存分配观察示例一递减分配如示例,如果是一个申请空间递减的应用,分配/释放大小为16MB-8MB-4MB-2MB,通过各阶段的svmon(svmon-nrP)可以看到,内存页面始终维持在16MBoMaIk)C分配16MB,未初始化时:VsidEsidTypeDescriptionPSizeInusePinPgspVirtualbl41411worktextdataBSSh
7、eaps2002ddrRange:0.40962cba7ffffffffworkapplicationstackAddressRange为04096页,即代表4096X4096=16MB虚拟地址空间。InuseZVirtual取值为2,表示该空间尚未实际分配。初始化后:VsidEsidTypeDescriptionPSizeInusePinPgspVirtualb!41411worktextdataBSSheaps4097004097AddrRange:0.4096Virtual=4097页,虚拟内存已经实际分配。释放之前申请的16MB,重新申请88MB并初始化后:b!41411worktex
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AIX 进程内存分配与回收策略及应用开发建议 进程 内存 分配 回收 策略 应用 开发 建议
