
内存泄漏
文章平均质量分 81
xuyin1204
这个作者很懒,什么都没留下…
展开
-
彻底理解LeakCanary的工作原理
LeakCanary工作原理解析原创 2023-04-10 16:41:02 · 4371 阅读 · 1 评论 -
内存泄露(九)-- TraceView工具(Device Monitor)
TraceView工具能做什么? 从代码层面分析性能问题,针对每个方法来分析,比如当我们发现我们的应用出现卡顿的时候,我们可以来分析出现卡顿时在方法的调用上有没有很耗时的操作,关注以下两个问题:调用次数不多,但是每一次执行都很耗时方法耗时不大,但是调用次数太多 简单一点来说就是我们能找到频繁被调用的方法,也能找到执行非常耗时的方法,前者可能会造成Cpu频繁调用,手机发烫的问题,后者就是卡顿的问题。TraceView工具启动打开Monitor,点击图中的标注的按钮,启动追踪:Trace转载 2021-06-18 09:26:43 · 331 阅读 · 0 评论 -
内存泄露(八)-- LeakCanary
添加LeakCanary依赖包https://github.com/square/leakcanary在主模块app下的build.gradle下添加如下依赖:debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'开启LeakCanary添加Application子类 首先原创 2021-06-18 09:03:09 · 503 阅读 · 1 评论 -
内存泄露(七)-- 性能优化的帮助工具Allocation Tracker(Android Studio)
Allocation Tracker(AS)工具比Allocation Tracker(Eclipse)工具强大的地方是更炫酷,更清晰,但是能做的事情都是一样的。Allocation Tracker启动 在内存图中点击途中标红的部分,启动追踪,再次点击就是停止追踪,随后自动生成一个alloc结尾的文件,这个文件就记录了这次追踪到的所有数据,然后会在右上角打开一个数据面板: 面板左上角是所有历史数据文件列表,后面是详细信息,现在我们来看详细介绍信息面板:下面我们用字母来分段介绍1.原创 2021-06-17 23:00:44 · 616 阅读 · 2 评论 -
内存泄露(六)-- 性能优化的帮助工具
性能优化的帮助工具: MAT, Memory Monitor(属于AndroidMonitor中一个模块), HeapTool(查看堆信息), Allaction Tracking, LeakCanary Lint工具1. Allaction Tracking追踪内存分配信息。可以很直观地看到某个操作的内存是如何进行一步一步地分配的。2. LeakCanarySquare公司可以直接在手机端查看内存泄露的工具实现原理:本质上还是用命令控制生成hprof文件分析检查内存泄露。然后发原创 2021-06-17 22:28:29 · 112 阅读 · 0 评论 -
内存泄露(五)-- 如何找到项目中存在的内存泄露的这些地方呢?
如何找到项目中存在的内存泄露的这些地方呢?1. 确定是否存在内存泄露Android Monitors的内存分析 最直观的看内存增长情况,知道该动作是否发生内存泄露。 动作发生之前:GC完后内存1.4M; 动作发生之后:GC完后内存1.6M使用MAT内存分析工具 MAT分析heap的总内存占用大小来初步判断是否存在泄露。 Heap视图中有一个Type叫做data object,即数据对象,也就是我们的程序中大量存在的类类型的对象。 在data object一行中有一列是“Total原创 2021-06-17 21:35:21 · 856 阅读 · 1 评论 -
内存泄露(四)-- MAT使用
下载:http://eclipse.org/mat/downloads.php MAT工具全称为Memory Analyzer Tool,一款详细分析Java堆内存的工具,该工具非常强大,为了使用该工具,我们需要hprof文件。但是该文件不能直接被MAT使用,需要进行一步转化,可以使用hprof-conv命令来转化,但是Android Studio可以直接转化,转化方法如下:选择一个hprof文件,点击右键选择Export to standard .hprof选项。填写更改后的文件名和路.原创 2021-06-17 21:04:27 · 340 阅读 · 1 评论 -
内存泄露(三)--Heap Viewer工具
1、Heap Viewer能做什么?实时查看App分配的内存大小和空闲内存大小发现Memory Leaks2、Heap Viewer使用条件5.0以上的系统,包括5.0开发者选项可用3、Heap Viewer启动可以直接在Android studio工具栏中直接点击小机器人启动:还可以在Android studio的菜单栏中Tools也可以:如果你不用Android studio,可以在SDK下的tools下的monitor程序打开:4、Heap Viewer面板按上图转载 2021-06-17 17:25:25 · 357 阅读 · 0 评论 -
内存泄露(二)--Heap Snapshot工具(基于AndroidStudio)
1、Heap Snapshot能做什么?获取Java堆内存详细信息,可以分析出内存泄漏的问题2、Heap Dump启动在内存面包中,点击图中红色标注的按钮,就会显示我们的Heap Snapshot面板3、Heap Snapshot面板4、Heap Snapshot详细信息面板该面板里的信息可以有三种类型:app heap/image heap/zygote heap.分别代表app 堆内存信息,图片堆内存信息,zygote进程的堆内存信息。A区域名称意义Tot原创 2021-06-17 17:07:29 · 1634 阅读 · 1 评论 -
内存泄露(一)
C/C++ 自己去分配内存和释放内存–手动管理malloc free什么是内存泄露:内存不在GC掌控之内了。当一个对象已经不需要再使用了,本该被回收时,而有另外一个正在使用的对象持有它的引用从而就导致对象不能被回收。这种导致了本该被回收的对象不能被回收而停留在堆内存中,就产生了内存泄漏了解java的GC内存回收机制:某对象不再有任何的引用的时候才会进行回收。ArrayList list = new Arraylist();了解内存分配的几种策略:1.静态的静态的存储区:内存在程序编译的时转载 2021-06-17 16:44:57 · 121 阅读 · 0 评论