内存监控与优化


用简单通俗的话来记录自己对架构的理解

1.内存监控

经常有线上用户反馈应用卡顿,而为了判断是否是内存超过了85%的最大限制,GC变得更加频繁,容易造成OOM和卡顿,所以,做了内存快照,也就是每5分钟进行内存快照一次。

(1).方案

用户在前台时,每5分钟采集一次PSS等进行内存快照。

(2).计算指标

(a)触顶率:可以反映 Java 内存的使用情况,如果超过 85% 最大堆限制,GC 会变得更加频繁,容易造成 OOM 和卡顿。

Rumtime类:
//其中是否触顶可以通过下面的方法计算得到
long javaMax = runtime.maxMemory();l
ong javaTotal = runtime.totalMemory();
long javaUsed = javaTotal‐runtime.freeMemory();
// Java 内存使用超过最大限制的 85%
float proportion = (float) javaUsed/javaMax

(b)GC监控

Debug类
android6.0之前:
//内存分配的次数和大小,以及 GC 发起次数等信息 
 long allocCount = Debug.getGlobalAllocCount();  
 long allocSize = Debug.getGlobalAllocSize();  
 long gcCount = Debug.getGlobalGcInvocationCount();

android6.0之后:
 // 运行的 GC 次数
 Debug.getRuntimeStat("art.gc.gc‐count");
 // GC 使用的总耗时,单位是毫秒
 Debug.getRuntimeStat("art.gc.gc‐time");
 // 阻塞式 GC 的次数
 Debug.getRuntimeStat("art.gc.blocking‐gc‐count");
 // 阻塞式 GC 的总耗时
 Debug.getRuntimeStat("art.gc.blocking‐gc‐time");

2.内存优化

(1).设备分级

if (year >= 2013) {
// Do advanced animation  
} elseif (year>=2010){
// Do simple animation  
} else {
// Phone too simple,don't do any animations
  }

5.站在巨人肩膀

(1)android内存优化经典
https://www.androidperformance.com/2015/04/11/AndroidMemory-Open-Bitmap-Object-In-MAT/

(2)内存优化
https://blog.youkuaiyun.com/qq_38366777/article/details/109842583

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值