当前位置: > 科技>正文

关于androidleakcanary的信息

2024-10-27 19:42:11 互联网 科技

本篇目录:

1、Android-LeakCanary原理解析2、如何快速定位Android内存泄漏位置3、如何在android源码中加入leakcanary

Android-LeakCanary原理解析

1、在源码中leakcanary-leaksentry中有一个LeakSentryInstaller,LeakSentryInstaller其实就是ContentProvider的一个子类,在其onCreate方法中就会调用InternalLeakSentry.install(application)进行初始化工作。

2、LeakCanary是一个Android和Java的内存检测库。

关于androidleakcanary的信息  第1张

3、【主要原理】借助工具来查看泄露的原因。详细实现方式 【工具查看】常用工具有很多例如:功能强大PC端检测工具,如MemoryAnalyzer运行在PC端抓取Android手机中的dump文件进行深度分析。

如何快速定位Android内存泄漏位置

1、使用LeakedCanary检测内存泄漏除了使用Eclipse的MemoryAnalyzer工具之外,我们还可以使用LeakedCanary工具进行内存泄漏的检测。

2、使用对象查询语言可以快速定位发生泄漏的Activity及Fragment 使用 MAT 来分析内存问题,效率比较低,为了能迅速发现内存泄漏,Square 公司基于 MAT 开源了 LeakCanary ,LeakCanary 是一个内存泄漏检测框架。

3、LeakCanary.install(this);集成后什么都不用做,按照正常测试,当有内存泄漏发生后,应用会通过系统通知栏发出通知,点击通知就可以进入查看内存泄漏的具体信息。在这里举个实践中的例子。

关于androidleakcanary的信息  第2张

4、我们接下来先来熟悉下Android Studio的界面 一般分析内存泄露, 首先运行程序,打开日志控制台,有一个标签Memory ,我们可以在这个界面分析当前程序使用的内存情况, 一目了然, 我们再也不需要苦苦的在logcat中寻找内存的日志了。

如何在android源码中加入leakcanary

1、在源码中leakcanary-leaksentry中有一个LeakSentryInstaller,LeakSentryInstaller其实就是ContentProvider的一个子类,在其onCreate方法中就会调用InternalLeakSentry.install(application)进行初始化工作。

2、添加自己源代码,在Android源码frameworks/base目录下新建一个文件夹保存代码,如tv,以包的形式命名添加的文件所在的路径,如/tv/java/android/tv,添加的java文件开头定义的包即是编译成功的class文件所在的包。

3、在应用程序的AndroidManifest.xml中的manifest节点中加入 android:sharedUserId=android.uid.system这个属性。

关于androidleakcanary的信息  第3张

4、第一个方法简单点,不过需要在Android系统源码的环境下用make来编译: 在应用程序的AndroidManifest.xml中的manifest节点中加入 android:sharedUserId=android.uid.system这个属性。

5、复制这个java文件到对应源码文件夹下就可以在Android Studio中查看了。通过调试可以看到,Android中普通类的加载器其实是 PathClassLoader 。

到此,以上就是小编对于的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位老师在评论区讨论,给我留言。

内存

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本站联系的,一经查实,本站将立刻删除。