memused
命令功能
memused命令用于查看当前系统used节点中保存的函数调用栈LR信息。通过分析数据可检测内存泄露问题。
命令格式
memused
使用指南
- 目前只有bestfit内存管理算法支持该功能,需要使能LOSCFG_KERNEL_MEM_BESTFIT。
Kernel ---> Memory Management ---> Dynamic Memory Management Algorithm ---> bestfit
- 该命令依赖于LOSCFG_MEM_LEAKCHECK,可以在菜单项中开启“Enable Function call stack of Mem operation recorded”:
Debug ---> Enable a Debug Version ---> Enable MEM Debug ---> Enable Function call stack of Mem operation recorded
开启该菜单项后,会在内存操作时,将函数调用关系LR记录到内存节点中,若相同调用栈的内存节点随时间增长而不断增多,则可能存在内存泄露,通过LR可以追溯内存申请的位置。重点关注LR重复的节点。
此配置打开时,会影响内存占用和内存操作性能,因此仅在检测内存泄露问题时打开。
使用实例
举例:
输入memused。
输出说明
Huawei LiteOS # memused node LR[0] LR[1] LR[2] 0x802d79e4: 0x8011d740 0x8011a990 0x00000000 0x802daa0c: 0x8011d5ec 0x8011d740 0x8011a990 0x802dca28: 0x8006e6f4 0x8006e824 0x8011d5ec 0x802e2a48: 0x8014daac 0x8014db4c 0x800f6da0 0x802e8a68: 0x8011d274 0x8011d654 0x8011d740 0x802e8a94: 0x8014daac 0x8014db4c 0x8011d494 0x802eeab4: 0x8011d4e0 0x8011d658 0x8011d740 0x802f4ad4: 0x8015326c 0x80152a20 0x800702bc 0x802f4b48: 0x8015326c 0x80152a20 0x800702bc 0x802f4bac: 0x801504d8 0x801505d8 0x80150834 0x802f4c08: 0x801504d8 0x801505d8 0x80150834 0x802f4c74: 0x801504d8 0x801505d8 0x80150834 0x802f4e08: 0x801504d8 0x801505d8 0x80150834 0x802f4e60: 0x801030e8 0x801504d8 0x801505d8 0x802f4e88: 0x80103114 0x801504d8 0x801505d8 0x802f4eb4: 0x801504d8 0x801505d8 0x80150834 0x802f4f7c: 0x801504d8 0x801505d8 0x80150834 0x802f5044: 0x801504d8 0x801505d8 0x80150834 0x802f510c: 0x800702bc 0x80118f24 0x00000000