一、背景
对于物联网设备,因为成本原因,分配到的内存是很有限,导致业务拓展上经常出现内存溢出,内存不够用的情况,导致业务停滞不前。在这样的背景下,进程化架构应运而生,将各个业务块做成一个个进程,这样在同样的业务需求,可分配到内存达到最大化,方便后续业务拓展。
本篇文章并不是介绍进程化架构,而是在进程化架构环境下,如果在主进程打印各个子进程的内存使用及分配的总内存。
二、代码
private void memoryInfo() { long availeMemory = MemoryUtil.getAvailMemory(LzApplication.getApplication()); long allMemory = MemoryUtil.getTotalMemory(LzApplication.getApplication()); boolean isRunLowMemory = MemoryUtil.isRunLowMemory(LzApplication.getApplication()); Map<String,String> mainMemory = MemoryUtil.getAppMemoryUsage(LzApplication.getApplication(),"com.machine.xxx"); Map<String,String> faceMemory = MemoryUtil.getAppMemoryUsage(LzApplication.getApplication(),"com.machine.xxx:face"); Map<String,String> taskMemory = MemoryUtil.getAppMemoryUsage(LzApplication.getApplication(),"com.machine.xxx:task"); LogUtil.i(TAG, "memoryInfo>> 所有进程内存使用" + ",系统的总内存:" + allMemory + "M,系统可用内存有:" + availeMemory + "M,系统是否处于低内存:" + isRunLowMemory + ",主进程分配内存:" + mainMemory.get("usage") + "M,主进程使用内存:" + mainMemory.get("used") + "M,人脸子进程分配内存:" + faceMemory.get("usage") + "M,人脸子进程使用内存:" + faceMemory.get("used") + "M,任务子进程分配内存:" + taskMemory.get("usage") + "M,任务子进程使用内存:" + taskMemory.get("used")); }