android优化----内存泄漏分析
2017-07-05 00:00
447 查看
摘要: 知其然还要之所以然,作为一位开发者,不仅要会搬代码,还要利用代码,知其原理,然后创造新事物
在开发到后期,更多的去维护App的性能和体验。比如app长时间使用带来的卡顿,闪退等原因。今天记录下我刚学习的内存泄漏分析。
内存泄漏:
通俗易懂的来说:就是java虚拟机在回收垃圾,无法回收该垃圾(无用对象)。无论多少内存,迟早会被占光。 在android中常见的就是 生命周期长的对象引用生命周期短的对象。
常见的静态对象持有Activity
分析流程:
采用AS的Monitor工具:
运行APP,针对某一功能重复使用后,点击GC 接着抓取JAVA Heap.
然后生成hprof文件,点击右边的Analyzer Tasks 进行分析
点击Leaked Activityes, 可以看到SppechActivity无法回收,展开列表,发现是有一个TextToSpeech占用。
分析问题代码位置:
在开发到后期,更多的去维护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占用。
分析问题代码位置:
相关文章推荐
- Android 性能优化之MAT分析内存泄漏
- Android性能优化: 常见内存泄漏分析
- Android 性能优化之一步步分析内存泄漏
- android优化分析 DDMS
- Android应用性能优化之分析工具[二]
- <android里图片下载工具类AsyncImageLoader分析> 后续:优化
- <android里图片下载工具类AsyncImageLoader分析> 后续:优化
- 【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!
- Android应用性能优化之绘图分析
- Android 内存泄漏分析(MemoryAnalyzer)
- Android 内存泄漏分析(MemoryAnalyzer)
- 【Android游戏开发之十】(优化处理)详细剖析Android Traceview效率检视工具,分析程序运行速度!并讲解两种创建SDcard方式!
- 【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!
- Android 中如何分析内存泄漏
- android 多线程数据库读写分析与优化
- android 中如何分析内存泄漏
- 【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!
- 【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!
- 【Android游戏开发之十】(优化处理)详细剖析Android Traceview效率检视工具,分析程序运行速度!并讲解两种创建SDcard方式!
- android开机logo分析和优化