mt2503 如何控制尽量不弹出Memory不够界面
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
ASM机制:所有APP共享一块memory,当启动某个AP申请Memory不够时,会弹出OOM(OutofMemory)提示关闭一些AP。
[SOLUTION]
若想手机上不弹OOM,有两种处理方法:
1.增大ASMPool的大小
2.改变UE行为,不要设计会弹OOM的场景,即如果A运行,再运行B会弹OOM,则不允许有从A进B的UE行为出现。
增大ASMPool的大小需要考虑整个手机的RAM配置,看Memory是否足够你增大。
Asmmemorypool为全局变量:g_applib_ap_mem_pool;
增大Pool的操作有简单测试法和标准操作法:
简单测试法:直接定义数组g_applib_ap_mem_pool的size为某个值。
标志操作法:查找到所有会弹OOM的场景,比如A/B都需要ASMmemory,两个同时运行时会弹OOM,则配置A/Bconcurrent。
对于使用ASM1.0的App(一般是plutoApp,在app_mem_config.h中配置Memory),配concurrent是在app_mem_config.h中的联合体中进行
kal_uint8APP_AM[APPLIB_MEM_CONC2_AP_POOL_SIZE(APPMEM_AM_POOL_SIZE,APPMEM_MRE_POOL_SIZE)
];;
kal_uint8APP_ALIPAY_OBIGO2[APPLIB_MEM_CONC3_AP_POOL_SIZE(APPMEM_MRE_APP_POOL_SIZE,APPME
M_ALIPAY_MEM_POOL_SIZE,APPMEM_WAP_POOL_SIZE)];
对于使用ASM2.0(cosmosApp,在res资源文件中配置Memory),在vapp_package_concurrent.res中配置concurrent,例如:
<APPCONCURRENT concurrent_w_order="VAPP_BROWSER, VAPP_GALLERY_YOUTUBE_PGDL_PLAYER"/>
另外查看当前AsmPool到底有多大,各个Ap的配置状况如何,可按如下步骤进行:
1.makeMMI_obj_check
2.查看build目录下Log文件:objcheck.log/objcheck.html
修改ASM配置后,若出现linkerror,可能的状况如下:
1.RAM空间不够。无法撑大ASMPool.此时只能想办法省RAM或重新考虑UE设计
2.ZIMAGE错误。Zimage配置时拿富余的RAM来放ZIMAGE,修改ASM导致剩余的RAM减少,需要重新配置ZIMAGE参数。
ASM机制:所有APP共享一块memory,当启动某个AP申请Memory不够时,会弹出OOM(OutofMemory)提示关闭一些AP。
[SOLUTION]
若想手机上不弹OOM,有两种处理方法:
1.增大ASMPool的大小
2.改变UE行为,不要设计会弹OOM的场景,即如果A运行,再运行B会弹OOM,则不允许有从A进B的UE行为出现。
增大ASMPool的大小需要考虑整个手机的RAM配置,看Memory是否足够你增大。
Asmmemorypool为全局变量:g_applib_ap_mem_pool;
增大Pool的操作有简单测试法和标准操作法:
简单测试法:直接定义数组g_applib_ap_mem_pool的size为某个值。
标志操作法:查找到所有会弹OOM的场景,比如A/B都需要ASMmemory,两个同时运行时会弹OOM,则配置A/Bconcurrent。
对于使用ASM1.0的App(一般是plutoApp,在app_mem_config.h中配置Memory),配concurrent是在app_mem_config.h中的联合体中进行
kal_uint8APP_AM[APPLIB_MEM_CONC2_AP_POOL_SIZE(APPMEM_AM_POOL_SIZE,APPMEM_MRE_POOL_SIZE)
];;
kal_uint8APP_ALIPAY_OBIGO2[APPLIB_MEM_CONC3_AP_POOL_SIZE(APPMEM_MRE_APP_POOL_SIZE,APPME
M_ALIPAY_MEM_POOL_SIZE,APPMEM_WAP_POOL_SIZE)];
对于使用ASM2.0(cosmosApp,在res资源文件中配置Memory),在vapp_package_concurrent.res中配置concurrent,例如:
<APPCONCURRENT concurrent_w_order="VAPP_BROWSER, VAPP_GALLERY_YOUTUBE_PGDL_PLAYER"/>
另外查看当前AsmPool到底有多大,各个Ap的配置状况如何,可按如下步骤进行:
1.makeMMI_obj_check
2.查看build目录下Log文件:objcheck.log/objcheck.html
修改ASM配置后,若出现linkerror,可能的状况如下:
1.RAM空间不够。无法撑大ASMPool.此时只能想办法省RAM或重新考虑UE设计
2.ZIMAGE错误。Zimage配置时拿富余的RAM来放ZIMAGE,修改ASM导致剩余的RAM减少,需要重新配置ZIMAGE参数。
666666