如何在 Android Studio 3.0 中查看本机内存和图形内存的分配
How can I see allocations of native and graphics memory in Android Studio 3.0
当我在 Android Studio 中分析应用程序的内存时,我可以看到不同类别的内存消耗,
但是当我转储 Java 堆(中间按钮)时,我只得到堆分配,
这是预期的按钮名称。但到目前为止我仍然可以看到分配的 char 数组和字符串,但正如我们所知,在最近的版本中,String 中的 char 数组被移动到本机堆并且 String class 只能通过本机方法访问它们,所以事实证明此堆转储还显示本机堆。我对吗?图形堆呢?
虽然它无论如何都不是权威来源,但我和其他人试图解释 java 内存使用 here。据我所知(使用 ART 或 Davlik 的人可以给你一个更明确的答案)整个应用程序只有一个堆可用,没有特定的图形堆。
Studio 向您展示的可能是 Android 图形操作消耗了多少堆。类似于堆栈(绿色)内存段向您显示当前调用堆栈正在消耗的内容。您可以通过突出显示一个段来查看它是如何反映在您的代码中的:
当您使用此视图时,您应该记得从下拉列表中 select 您的应用程序堆:
本机和 Java 段显示有多少内存是通过 SDK/Java 框架直接分配的,有多少是通过底层结构本机分配的。 (它们不会在您的应用程序中向您显示不同的内存区域,这看起来可能令人困惑 - 请参阅末尾的 link)
有关探查器向您展示的内容的最佳概述在 Developer Documentation 中,其中还概述了系统映像和合子堆对您的意义。
当我在 Android Studio 中分析应用程序的内存时,我可以看到不同类别的内存消耗,
但是当我转储 Java 堆(中间按钮)时,我只得到堆分配,
这是预期的按钮名称。但到目前为止我仍然可以看到分配的 char 数组和字符串,但正如我们所知,在最近的版本中,String 中的 char 数组被移动到本机堆并且 String class 只能通过本机方法访问它们,所以事实证明此堆转储还显示本机堆。我对吗?图形堆呢?
虽然它无论如何都不是权威来源,但我和其他人试图解释 java 内存使用 here。据我所知(使用 ART 或 Davlik 的人可以给你一个更明确的答案)整个应用程序只有一个堆可用,没有特定的图形堆。
Studio 向您展示的可能是 Android 图形操作消耗了多少堆。类似于堆栈(绿色)内存段向您显示当前调用堆栈正在消耗的内容。您可以通过突出显示一个段来查看它是如何反映在您的代码中的:
当您使用此视图时,您应该记得从下拉列表中 select 您的应用程序堆:
本机和 Java 段显示有多少内存是通过 SDK/Java 框架直接分配的,有多少是通过底层结构本机分配的。 (它们不会在您的应用程序中向您显示不同的内存区域,这看起来可能令人困惑 - 请参阅末尾的 link)
有关探查器向您展示的内容的最佳概述在 Developer Documentation 中,其中还概述了系统映像和合子堆对您的意义。