【问题标题】:How can I find which objects take most of the memory in android app?如何在 android 应用程序中找到哪些对象占用了大部分内存?
【发布时间】:2016-01-08 20:26:09
【问题描述】:

我正在尝试查看哪些对象占用了我的应用程序中的大部分内存。
使用 Android 的工作室 Android->Memory 选项卡,我可以看到内存是如何增加的,但我看不到哪些对象占用了多少内存。
我使用 DDMS 获取了 hprof,还从“内存”选项卡中进行了启动分配跟踪和“转储 Java 堆”。
我安装了独立垫,但是当我尝试打开 hprofs 时,我得到了两个:

打开堆转储“Snapshot_2016.01.08_19.00.05.hprof”时出错。查看 错误日志以获取更多详细信息。

有什么问题?
我的 Android Studio 版本是 1.3.2

【问题讨论】:

    标签: android macos android-studio mat hprof


    【解决方案1】:

    使用Android的studio Android->Memory tab 可以看到内存是怎么增加的,但是看不到哪些对象占用了多少内存

    您可以在 Android Studio 上从该内存选项卡中的工具栏生成堆转储。这将打开类似于 MAT 的工具,供您细读内存中的对象。

    打开堆转储“Snapshot_2016.01.08_19.00.05.hprof”时出错。检查错误日志以获取更多详细信息。

    Android 使用的堆转储格式与 MAT 使用的一种略有不同。在您的 Android SDK 的 platform-tools/ 中有一个 hprof-conv 工具,可以准备 MAT 友好版本的 .hprof 文件。

    The documentation 对此有一些资料。

    【讨论】:

    • 当我按下图标“为选定的客户端转储 Java 堆转储”时,它会将 hprof 保存在一个文件夹中。我应该使用什么工具来打开它?
    • @Jim:即兴发挥,感觉就像您拥有的是旧版本的 Android Studio。 AS 1.5.1 中该图标上的工具提示是“Dump Java Heap”,它会自动在 Android Studio 本身中打开堆转储,如答案中的屏幕截图所示。
    • 使用 hprof-conv 我可以使用 mat 打开 hprof。那么这是否意味着在 1.5.1 之前的版本中 mat 是唯一的选择?
    • @Jim:工作室内的堆查看器相当新。我忘了它是在 1.4 还是 1.5 中引入的。
    • 那么一般来说,Android Studio 在分析方面变得比 mat 更有用了吗?还是只是方便的第一步检查?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    相关资源
    最近更新 更多