Dav*_*son 5 heap android memory-management allocation
我们为一个简单的项目开发了NDK原型.代码在设备和模拟器中编译和工作.然而,当查看手机上的设置菜单时:(三星Galaxy Nexus(Android 4.2.2),三星Gio(Android 2.3.6)),在Gio上运行应用程序比运行应用程序时占用更多空间Galaxy Nexus.此外,以下命令报告GIO的堆分配要高得多:
System.out.println(Debug.getNativeHeapAllocatedSize() / 1049L);
Run Code Online (Sandbox Code Playgroud)
我们使用静态库来实现许多功能.确切的结果是:
关系:
GIO:
足迹和内存使用量差异的原因是什么?
(测量iOS设备上的分配(C++ lib)在3GS上产生与Galaxy Nexus大致相同的结果).
Android 2.x 和 Android 4 之间有很多差异。一个例子是位图内存的管理方式:
在 Android Android 2.2(API 级别 8)及更低版本上,当发生垃圾回收时,应用程序的线程将停止。这会导致延迟,从而降低性能。Android 2.3 添加了并发垃圾回收,这意味着当位图不再被引用后,内存会被立即回收。
在 Android 2.3.3(API 级别 10)及更低版本中,位图的背景像素数据存储在本机内存中。它与存储在 Dalvik 堆中的位图本身是分开的。本机内存中的像素数据不会以可预测的方式释放,可能会导致应用程序短暂超出其内存限制并崩溃。从 Android 3.0(API 级别 11)开始,像素数据与关联的位图一起存储在 Dalvik 堆上。
引用自: http ://developer.android.com/training/displaying-bitmaps/manage-memory.html
| 归档时间: |
|
| 查看次数: |
768 次 |
| 最近记录: |