文档章节

android优化----内存泄漏分析

HzhiBo
 HzhiBo
发布于 2017/07/05 15:07
字数 339
阅读 153
收藏 1

在开发到后期,更多的去维护App的性能和体验。比如app长时间使用带来的卡顿,闪退等原因。今天记录下我刚学习的内存泄漏分析。

内存泄漏:

通俗易懂的来说:就是java虚拟机在回收垃圾,无法回收该垃圾(无用对象)。无论多少内存,迟早会被占光。 在android中常见的就是 生命周期长的对象引用生命周期短的对象。

    常见的静态对象持有Activity

public class SpeechUtils {
    private Context context;

    private static final String TAG="speechUtils";

    private TextToSpeech textToSpeech;
    public static SpeechUtils getInstance(Context context){
        return new SpeechUtils(context);
    }
}

//Activity 实例化SpeechUtils
public class SpeechActivity extends AppCompatActivity implements TextToSpeechBeta.OnInitListener {
    @BindView(R.id.textView)
    EditText textView;
    @BindView(R.id.button2)
    Button button2;
    private SpeechUtils speechUtils;
    private int CODE = 0x01;
    private TextToSpeechBeta mTts;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_speech);
        ButterKnife.bind(this);
        speechUtils =SpeechUtils.getInstance(this);
    }
}

分析流程:

采用AS的Monitor工具:

运行APP,针对某一功能重复使用后,点击GC 接着抓取JAVA Heap.

这里写图片描述

然后生成hprof文件,点击右边的Analyzer Tasks 进行分析

点击Leaked Activityes, 可以看到SppechActivity无法回收,展开列表,发现是有一个TextToSpeech占用。

分析问题代码位置:

 

 

© 著作权归作者所有

共有 人打赏支持
HzhiBo
粉丝 8
博文 27
码字总数 21222
作品 0
泉州
Android工程师
Android内存优化(六)LeakCanary使用详解

相关文章 Android性能优化系列 Java虚拟机系列 1.概述 如果使用MAT来分析内存问题,会有一些难度,并且效率也不是很高,对于一个内存泄漏问题,可能要进行多次排查和对比。 为了能够简单迅速...

刘望舒
2017/09/10
0
0
Android应用内存泄漏的定位、分析与解决策略

Hello,大家好,我是Clock。翻了一下简书,发现有一个多月没有更新博客,本来今天打算和妹纸去电影院看《你的名字》,然后再去到处浪的。 结果因为妹纸公司临时有事,她不得不回公司一趟......

D_clock爱吃葱花
06/29
0
0
【android测试】值得学习的android测试知识连接

Android应用程序的debug属性: http://blog.csdn.net/hudashi/article/details/8698142 彻底解决Android 应用方法数不能超过65535的问题 http://blog.csdn.net/yuanzeyao/article/details/418......

beijing_zbs
2014/12/02
0
0
一步步拆解 LeakCanary

本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 java 源码系列 - 带你读懂 Reference 和 ReferenceQueue https://blog.csdn.net/gdutxiaoxu/article/details/80738581 一步步拆解 ...

xujun9411
07/04
0
0
Android性能分析工具简介

在Android项目开发工程中,功能开发只是其中的一部分,更多的时候是优化,优化除了个人的良好习惯,往往还需要借助第三方工具。本文罗列Android优化过程中的一些常用工具借助这些工具,可以很...

code_xzh
05/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

iOS开发用到的图片尺寸汇总

启动图 型号 竖屏 横屏 iPhone SE 640px × 1136px 1136px × 640px iPhone 6s 750px × 1334px 1334px × 750px iPhone 6s Plus 1242px × 2208px 2208px × 1242px iPhone 7 750px × 1334......

业界小白
26分钟前
0
0
浅谈redis

redis是一个开源,内存式的健值存储数据库,也被称为健值存储的字典服务器。健值类型有字符串,hash(哈希类型),set(集合),list(列表) 和有序集合 特征细节: 内存式:redis将健值存储在主...

拐美人
34分钟前
0
0
无限扩容,按需使用!ZStack推出基于阿里云NAS的文件存储服务

日前,ZStack发布2.6.0版本,正式宣布推出基于阿里云NAS的文件存储服务。得益于业界领先的阿里云分布式存储架构,融合NAS后的ZStack 2.6.0拥有高性能、高可靠、容量无限扩展、一键操作、按需...

ZStack社区版
36分钟前
1
0
崛起于Springboot2.X之Mongodb多数据源处理(35)

多数据源:4个mongodb库! 目录结构图: 1、添加pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId>......

木九天
42分钟前
0
0
如何获取显示器的EDID信息

Q1: 为什么要写这篇文章? A1:在最近的工作中遇到了不少问题,其中很多都是和EDID相关的。可以说,作为一家以“显示”为生的企业,我们时时刻刻在与EDID打交道。EDID这东西很简单,但是如果...

DB_Terrill
42分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部