android.内存监控,android的内存监控
有道云笔记 Android内存监控
http://note.youdao.com/noteshare?id=6733e5300c8a4d06fa3c41a4f03f5c7b
内存总量:/proc/meminfo
adb shelldumpsys meminfoYOUR-PACKAGE-NAME
VSS – Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS – Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PSS – Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS – Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
USS 是针对某个进程开始有可疑内存泄露的情况, 是一个程序启动了会产生的虚拟内存,一旦这个程序进程杀掉就会释放!
Item全称含义等价
USSUnique Set Size物理内存进程独占的内存
PSSProportional Set Size物理内存PSS= USS+ 按比例包含共享库
RSSResident Set Size物理内存RSS= USS+ 包含共享库
VSSVirtual Set Size虚拟内存VSS= RSS+ 未分配实际物理内存
https://testerhome.com/topics/2572
内存的采集:
Android的内存的采集这边介绍三种方式:
1,通过Dumpsys 来取值
adb shell dumpsys meminfo ( pid)
adb shell dumpsys meminfo pakagename or Pid
有如下两种显示方式:
正确的观点:
大家都知道,过多地创建bitmap会导致OOM异常,且native heapsize不受dalvik限制,所以可以得出结论:
Bitmap只能是分配在dalvik heap上的,因为只有这样才能解释bitmap容易导致OOM。
在Android2.3和以前的版本,bitmap对象的像素数据都是分配在native heap中的,所以我们在调试过程中这部分内存是在java heap中看不到的,不过在android 3.0之后,bitmap对象就直接分配在java heap上了,这样便于调试和管理。因此在3.0之后我们可以复用bitmap的内存,而不必回收它,不过新的bitmap对象要大小和原来的一样,到了android 4.4之后,就只要高宽不超过原来的就行了。Bitmap是分配在dalvik heap上的,只有这样才能解释bitmap容易导致OOM。
最大内存限制只是限Dalvik heap 的大小
#查看单个应用程序最大内存限制 对于 OOM 的监测很重要!!adb shell getprop|grepheapgrowthlimit
而meminfo 里面的dalvik heap size 的最大值若果超出了128M 那就很可能会发生OOM
2.使用ActivityManager
1. ActivityManager.MemoryInfo :
availMem:表示系统剩余内存
lowMemory:它是boolean值,表示系统是否处于低内存运行
hreshold:它表示当系统剩余内存低于好多时就看成低内存运行
我用过以上三种最多,其实Top 也可以 还有很多方法都可以。
2.Debug.MemoryInfo
dalvikPrivateDirty 进程占用内存
3.android 每个 app 内存限制大小
activityManager.getMemoryClass();
// OOM 之前
Runtime.getRuntime().addShutdownHook();
leakcanary 原理
android.内存监控,android的内存监控相关推荐
- 【Android 内存优化】Bitmap 内存缓存 ( Bitmap 内存复用 | 弱引用 | 引用队列 | 针对不同 Android 版本开发不同的 Bitmap 复用策略 | 工具类代码 )
文章目录 一.Bitmap 复用池 二.弱引用 Bitmap 内存释放 三.从 Bitmap 复用池中获取对应可以被复用的 Bitmap 对象 1.Android 2.3.3(API 级别 10)及以 ...
- android cne服务,Android内存优化-了解内存篇
查看系统内存 文件 shell@aries:/ $ cat /proc/meminfo MemTotal: 1970216 kB MemFree: 83756 kB Buffers: 156020 k ...
- android oom工具,Android OOM-Heap,MAT工具检测内存泄露
概述 在android的开发中,要时刻主要内存的分配和垃圾回收,因为系统为每一个dalvik虚拟机分配的内存是有限的,在google的G1中,分配的最大堆大小只有16M,后来的机器一般都为24M,实在 ...
- android监控方法耗时开源库,【开源完整项目】 AndroidGodEye 监控Android数据指标
AndroidGodEye Android开发者在性能检测方面的工具一直比较匮乏,仅有的一些工具,比如Android Device Monitor,使用起来也有些繁琐,使用起来对开发者有一定的要求.而 ...
- android内存测试方法,Android内存测试方法.doc
Android内存测试方法 标准: 1.Android手持设备最大进程内存阀值的50% 2.不允许出现内存泄漏 3.OOM要有异常处理机制 常用工具: 1. DDMS 2. MAT 3. Magnif ...
- Android App性能优化之内存优化
为什么要进行内存优化? 1.App运行内存限制,OOM导致App崩溃 2.App性能:流畅性.响应速度和用户体验 Android的内存管理方式 Android系统内存分配与回收方式 ● 一个App ...
- Android 解决OutOfMemory,从避免内存溢出开始
前言:一个刚上班和三年工作经验的安卓程序猿,做同一个项目.如果只从表面上看,并没有什么区别.但从项目的性能.稳定性.扩展性等方面来观察的话,差别不要太大.言归正传,今天我们来说一下安卓开发中很常见的问 ...
- Android 性能优化之内存泄漏检测以及内存优化(上)
在 Java 中,内存的分配是由程序完成的,而内存的释放则是由 Garbage Collecation(GC) 完成的,Java/Android 程序员不用像 C/C++ 程序员一样手动调用相关函数来 ...
- 深入剖析:如何优化Android应用的性能和内存管理
深入剖析:如何优化Android应用的性能和内存管理 性能和内存管理的重要性 在今天的移动应用开发中,用户对于应用的性能和体验要求越来越高.一款性能卓越的Android应用能够提供流畅的操作体验.快速 ...
最新文章
- centos pureftpd mysql_使用PureFTPd和MySQL的虚拟主机(包括配额和带宽管理)在CentOS 6.2上...
- 三天学会Selenium,阿里p7精心整理自动化测试Selenium大礼包
- 直播 | 脑血管斑块磁共振成像:技术研发、临床转化和数据挑战
- 解读自动驾驶的2020:从硬件角度看,无人车商业化落地难在哪?
- docker的学习笔记(一)-一些基本的命令的学习
- Centos7.2搭建Openstack的Swift组件,查看状态:No such file or directory
- thinkcmfx漏洞太大_ThinkCMF5 代码执行漏洞及后续有关思考
- 如何使用MiniProfiler(附最新版MiniProfiler使用心得)
- concat php,php基于concat实现无限分类
- 真正的工业互联网!传统企业的数据建设之路,这3个场景不得不看
- python下载bt文件_python获取bt种子的详细信息
- 异常:org.springframework.http.converter.HttpMessageNotReadableException
- Input and Output-HackerRank C++
- fisher精确检验(fisher’s exat test)和超几何分布
- java 繁体转简体_如何用java将繁体字转为简体字
- can't create new tempfile: mysql_MySQL数据表“使用中”修复后依然无效提示Can't create new tempfile的解决方法...
- Zynga公布2020年第四季度及全年财务业绩
- ChatGPT使用案例之图像生成
- SAP的SYSTEM的函数列表和代码示例
- 《惢客创业日记》2021.01.27-31(周三)顾耀东傻吗?