专业的编程技术博客社区

网站首页 > 博客文章 正文

Android中如何查看一个对象的回收情况 ?

baijin 2024-11-15 16:16:26 博客文章 4 ℃ 0 评论

参考回答:先大概说一下方法,然后再简单说一下 Java四种引用类型的场景和使用(强引用、软引用、弱引用、虛引用)


第一种方式 使用 AndroidStudio 内存分析器查看应用的内存使用情况

>第一步 在AndroidStudio中,依次点击 View > Tool Windows > Profiler(也可以点击工具栏中的 Profile 图标 )。

>第二步 从 Android Profiler 工具栏中选择要分析的设备和应用进程。如果您已通过 USB 连接设备但系统未列出该设备,请确保已启用 USB 调试。

>第三步 点击 MEMORY 时间轴上的任意位置以打开内存分析器。


第二种方式 使用 dumpsys 命令来查看

dumpsys 是一种在 Android 设备上运行的工具,可提供有关系统服务的信息。

使用 dumpsys 的一般语法如下:

 adb shell dumpsys [-t timeout] [--help | -l | --skip services | service [arguments] | -c | -h]

取所连接设备的所有系统服务的诊断输出:

adb shell dumpsys input

查看可与 dumpsys 配合使用的系统服务的完整列表

adb shell dumpsys -l


第三种方式 使用 LogCat 读取垃圾回收消息

发生垃圾回收 (GC) 事件时,相应消息会输出到 Logcat 中,在 Dalvik(而不是 ART)中,每个 GC 都会将以下信息输出到 Logcat 中,如:

D/dalvikvm( 9050): GC_CONCURRENT freed 2049K, 65% free 3571K/9991K, external 4703K/5261K, paused 2ms+2ms

ART 日志消息,与 Dalvik 不同,ART 不会为未明确请求的 GC 记录消息。仅在 GC 为显式或 GC 暂停时间超过 5 毫秒或 GC 持续时间超过 100 毫秒时,系统才会输出 GC 消息。如果应用未处于可察觉到暂停的状态(例如应用在后台运行时,这种情况下,用户无法察觉 GC 暂停),则除了显示 GC 外的任何 GC 信息都不会被输出。

如:

I/art : Explicit concurrent mark sweep GC freed 104710(7MB) AllocSpace objects,
    21(416KB) LOS objects, 33% free, 25MB/38MB, paused 1.230ms total 67.216ms

#头条创作挑战赛##互联网#

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表