堆分配行为怪异-Android

堆分配行为怪异-Android,android,eclipse,memory-management,heap-memory,Android,Eclipse,Memory Management,Heap Memory,我无法理解这里发生了什么-我一直在创建一个小项目,只是为了了解图像的旋转。但这与此无关 所以-我以前一直在做这件事,并且知道堆是如何工作的,但我知道我不能得到它 在这个小型Eclipse项目中,我在drawable mdpi文件夹中放置了一个图像。图像是 1300 * 1950 简单地说,这个映像将占用大约以下数量的ram(堆) 红色、绿色、蓝色和阿尔法色。就这样 但是发生了什么。好的,请看下面的日志!!!三星Galaxy S3的63MB内存几乎耗尽 02-17 08:50:05.144:

我无法理解这里发生了什么-我一直在创建一个小项目,只是为了了解图像的旋转。但这与此无关

所以-我以前一直在做这件事,并且知道堆是如何工作的,但我知道我不能得到它

在这个小型Eclipse项目中,我在drawable mdpi文件夹中放置了一个图像。图像是

1300 * 1950
简单地说,这个映像将占用大约以下数量的ram(堆)

红色、绿色、蓝色和阿尔法色。就这样

但是发生了什么。好的,请看下面的日志!!!三星Galaxy S3的63MB内存几乎耗尽

 02-17 08:50:05.144: I/dalvikvm-heap(21097): Grow heap (frag case) to   22.494MB for 10140016-byte allocation
 02-17 08:50:05.164: D/dalvikvm(21097): GC_CONCURRENT freed 1K, 5% free 22152K/23175K, paused 12ms+2ms, total 22ms
 02-17 08:50:05.329: D/dalvikvm(21097): GC_FOR_ALLOC freed 0K, 5% free 22152K/23175K, paused 11ms, total 11ms
 02-17 08:50:05.429: I/dalvikvm-heap(21097): Grow heap (frag case) to 61.174MB for 40560016-byte allocation
 02-17 08:50:05.449: D/dalvikvm(21097): GC_CONCURRENT freed 0K, 2% free 61761K/62791K, paused 11ms+3ms, total 22ms
 02-17 08:50:06.109: D/libEGL(21097): loaded /system/lib/egl/libEGL_mali.so
 02-17 08:50:06.119: D/libEGL(21097): loaded /system/lib/egl/libGLESv1_CM_mali.so
 02-17 08:50:06.124: D/libEGL(21097): loaded /system/lib/egl/libGLESv2_mali.so
 02-17 08:50:06.179: D/(21097): Device driver API match
 02-17 08:50:06.179: D/(21097): Device driver API version: 10
 02-17 08:50:06.179: D/(21097): User space API version: 10 
 02-17 08:50:06.179: D/(21097): mali: REVISION=Linux-r2p4-02rel0 BUILD_DATE=Fri Sep 28 10:42:56 KST 2012 
 02-17 08:50:06.254: D/OpenGLRenderer(21097): Enabling debug mode 0
首先,它正确地分配了内存(根据我的计算,您可以看到10MB)和一个远高于此的堆,即20MB。到现在为止,一直都还不错。但随后它继续分配远远高于该级别的内存。就像有另一个40MB的映像(是前一个映像的4倍)一样,分配的堆最终会达到61MB,几乎耗尽了内存

我错过了什么,还是一只虫子?我已经检查了所有的绘图文件夹,我知道我运行这个应用程序,而不是另一个。我确实重新创建了这个项目,甚至更改了图像名称。重新启动计算机和设备

这是源代码

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ImageView imgview = (ImageView) findViewById(R.id.image);
    Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.image1);
}
xml文件

   <ImageView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    />

更多信息:设备已根目录

   <ImageView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    />