当前位置: 首页 > news >正文

Android Studio Profiler Memory (内存分析工具)的简单使用及问题分析

Android Studio Profiler Memory (内存分析工具)的简单使用及问题分析

https://www.jianshu.com/p/60efad38c5d6

https://www.jianshu.com/p/60efad38c5d6

Memory Profiler 是 Android Studio自带的内存分析工具,可以帮助开发者很好的检测内存的使用,在出现问题时,也能比较方便的分析定位问题,不过在使用的时候,好像并非像自己一开始设想的样子。

如何查看整体的内存使用概况

如果想要看一个APP整体内存的使用,看APP heap就可以了,不过需要注意Shallow Size跟Retained Size是意义,另外native消耗的内存是不会被算到Java堆中去的。

 

image.png

  • Allocations:堆中的实例数。
  • Shallow Size:此堆中所有实例的总大小(以字节为单位)。其实算是比较真实的java堆内存
  • Retained Size:为此类的所有实例而保留的内存总大小(以字节为单位)。这个解释并不准确,因为Retained Size会有大量的重复统计
  • native size:8.0之后的手机会显示,主要反应Bitmap所使用的像素内存(8.0之后,转移到了native)

举个例子,创建一个List的场景,有一个ListItem40MClass类,自身占用40M内存,每个对象有个指向下一个ListItem40MClass对象的引用,从而构成List,



作者:看书的小蜗牛
链接:https://www.jianshu.com/p/60efad38c5d6
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

Memory Profiler 是 Android Studio自带的内存分析工具,可以帮助开发者很好的检测内存的使用,在出现问题时,也能比较方便的分析定位问题,不过在使用的时候,好像并非像自己一开始设想的样子。

如何查看整体的内存使用概况

如果想要看一个APP整体内存的使用,看APP heap就可以了,不过需要注意Shallow Size跟Retained Size是意义,另外native消耗的内存是不会被算到Java堆中去的。

 

image.png

  • Allocations:堆中的实例数。
  • Shallow Size:此堆中所有实例的总大小(以字节为单位)。其实算是比较真实的java堆内存
  • Retained Size:为此类的所有实例而保留的内存总大小(以字节为单位)。这个解释并不准确,因为Retained Size会有大量的重复统计
  • native size:8.0之后的手机会显示,主要反应Bitmap所使用的像素内存(8.0之后,转移到了native)

举个例子,创建一个List的场景,有一个ListItem40MClass类,自身占用40M内存,每个对象有个指向下一个ListItem40MClass对象的引用,从而构成List,



作者:看书的小蜗牛
链接:https://www.jianshu.com/p/60efad38c5d6
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

 

 

 

 

 

 

 

 

 

 

 

相关文章:

  • Android平台上的Native内存分析
  • Unity 通过解析libil2cpp.so文件查看Android Crash崩溃原因
  • Android native memory leak detect (Android native内存泄露检测)
  • Android死锁初探
  • Unity Profile 自己使用
  • iOS性能分析-Xcode Instruments Allocations 分析APP内存使用情况
  • UE 手游在 iOS 平台运行时内存占用太高?试试这样着手优化
  • UE4 Sequence学习笔记
  • UE4中的相机操控方案
  • 对ue4 sequence的学习和理解
  • [gdc19]《战神4》中的全局光照技术
  • 5 种避免使用 C# lock 关键字的方法
  • [玩转UE4动画系统>功能模块] 之 Advanced Locomotion System V4 的工具函数及工具宏详解
  • Lua5.4新特性
  • 探究光线追踪技术及UE4的实现 -- good
  • 2017前端实习生面试总结
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Gradle 5.0 正式版发布
  • markdown编辑器简评
  • React-redux的原理以及使用
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 巧用 TypeScript (一)
  • 全栈开发——Linux
  • 设计模式 开闭原则
  • 算法之不定期更新(一)(2018-04-12)
  • 项目实战-Api的解决方案
  • 小程序01:wepy框架整合iview webapp UI
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​​​​​​​​​​​​​​Γ函数
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​第20课 在Android Native开发中加入新的C++类
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #100天计划# 2013年9月29日
  • (9)目标检测_SSD的原理
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (算法)N皇后问题
  • (算法二)滑动窗口
  • (学习日记)2024.01.19
  • (译) 函数式 JS #1:简介
  • (转)c++ std::pair 与 std::make
  • (转)四层和七层负载均衡的区别
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .net 发送邮件
  • .Net 垃圾回收机制原理(二)
  • .NET中统一的存储过程调用方法(收藏)
  • .pop ----remove 删除
  • /etc/sudoers (root权限管理)
  • @EventListener注解使用说明
  • @Import注解详解
  • @JSONField或@JsonProperty注解使用