Open SuperMan-Lfj opened 3 years ago
读取内存信息,跟Android Profiler 分析一致。其他的都不准。
@TargetApi(Build.VERSION_CODES.M) private double getRunningMemory() { double mem = 0.0D; try { // 统计进程的内存信息 totalPss final Debug.MemoryInfo[] memInfo = activityManager.getProcessMemoryInfo(new int[]{Process.myPid()}); if (memInfo.length > 0) { String java_mem = memInfo[0].getMemoryStat("summary.java-heap"); String native_mem = memInfo[0].getMemoryStat("summary.native-heap"); String graphics_mem = memInfo[0].getMemoryStat("summary.graphics"); String stack_mem = memInfo[0].getMemoryStat("summary.stack"); String code_mem = memInfo[0].getMemoryStat("summary.code"); String others_mem = memInfo[0].getMemoryStat("summary.system"); final int dalvikPss = ConvertUtils.convertToInt(java_mem,0) + ConvertUtils.convertToInt(native_mem,0) + ConvertUtils.convertToInt(graphics_mem,0) + ConvertUtils.convertToInt(stack_mem,0) + ConvertUtils.convertToInt(code_mem,0) + ConvertUtils.convertToInt(others_mem,0); if (dalvikPss >= 0) { // Mem in MB mem = dalvikPss / 1024.0D; } } } catch (Exception e) { e.printStackTrace(); } return mem; } /** * 转化为int * @param value 传入对象 * @param defaultValue 发生异常时,返回默认值 * @return */ public final static int convertToInt(Object value, int defaultValue){ if (value == null || "".equals(value.toString().trim())){ return defaultValue; } try { return Integer.valueOf(value.toString()); }catch (Exception e){ try { return Integer.valueOf(String.valueOf(value)); }catch (Exception e1) { try { return Double.valueOf(value.toString()).intValue(); }catch (Exception e2){ return defaultValue; } } } }
参考链接: https://www.jianshu.com/p/9a7a65f12c01
实时获取当前app内存占用
读取内存信息,跟Android Profiler 分析一致。其他的都不准。
参考链接: https://www.jianshu.com/p/9a7a65f12c01