空的Android应用程序

时间:2015-06-22 12:33:01

标签: android memory-management heap-memory

我有一个非常简单的Android应用程序,只有一个活动,只有一个TextView,上面写着“Hello World”。该应用程序没有做任何其他事情。它是您在Android Studio中创建新应用时获得的默认应用。基本上该应用程序没有做任何事情。

正如预期的那样,当您尝试对此应用程序进行内存分析时,Android设备监视器在hdpi / mdpi设备(如MotoE,MotoG等)上显示非常小的内存使用量(堆大小~10 MB,堆分配~3 MB)

然而,在xhdpi / xxhdpi设备(Nexus 5,小米Mi3,Mi4i,三星Galaxy Note 2等)上,应用程序堆大小突然增加到31 MB并分配到23 MB。

以下是来自小米Mi3的Android设备监视器的屏幕截图: enter image description here

我进行了堆转储并在内存分析器工具(MAT)中打开它。 2个主要泄密嫌疑人是“android.content.res.Resources”和“android.graphics.NinePatch”类,仅为其中2个分配了20.3 MB。

The class "android.content.res.Resources", loaded by "<system class
loader>", occupies 87,24,208 (36.45%) bytes. The memory is accumulated 
in one instance of "android.util.LongSparseArray[]" loaded by "<system 
class loader>".

217 instances of "android.graphics.NinePatch", loaded by "<system 
class loader>" occupy 1,26,11,616 (52.70%) bytes. These instances are 
referenced from one instance of "java.lang.Object[]", loaded by "
<system class loader>"

还有一个暗示说这两个嫌疑人可能是相关的,因为他们的参考链有一个共同的开头。

为什么这么简单的应用程序会为这两个类分配如此大量的堆内存,这基本上什么都不做?

0 个答案:

没有答案