前言
尽管Java虚拟机可以帮我们对内存进行回收,但是其回收的是Java虚拟机不再引用的对象。很多时候我们使用系统的IO流,Cursor,Receiver如果不及时释放,就会导致内存泄漏,这些场景是常见的,一般开发人员也都能够避免。但是,很多时候内存泄漏的现象不是很明显,比如内部类,Handler相关的使用导致的内存泄漏,或者你使用了第三方library的一些引用,比较消耗资源,但又不是像系统资源那样会引起你足够的注意去手动释放它们。当代码越来越多,如果结构不是很清晰,即使是常见的资源也有可能略掉,从而导致内存泄漏。内存泄漏很有可能会导致内存溢出,就是常说的OOM,从而导致应用crash,给用户一种糟糕的体验。该篇文章就是介绍内存分析工具MAT以及实战来帮你更好的分析内存问题。前面是相关概念介绍,最后通过内存泄漏分析,集合使用率,Hash性能分析,OQL快读定位空集合实战演示如何在实际应用中使用MAT。(通过一些静态检测也可以在开发期发现一些内存泄漏的问题,后面会有一些静态检测的文章)尽管Java虚拟机可以帮我们对内存进行回收,但是其回收的是Java虚拟机不再