Android 4K高清图片解码显示(1)安卓内存分析

原创 2015年11月20日 10:57:41

    Android在5.0之前使用Dalvik虚拟机。Dalvik 基于寄存器,而 JVM 基于栈。

    Dalvik的内存分为3部分:

          1.Java Object Heap:这部分是用来分配java对象的,app中java代码new出来的对象都在这个heap当中分配。  Android系统对dalvik的heap  size作了硬性限制,不同的手机可能根据自身内存大小为Java Object Heap配置了不同的大小。当java进程申请的java空间超过阈值时,就会抛出OOM异常。 在代码中可以使用ActivityManager.getMemoryClass方法获取该值。Java  Object Heap的最大值就是app能够使用的最大内存。下面是我的Nexus5的配置:

[dalvik.vm.heapsize]: [512m]
[dalvik.vm.heapstartsize]: [8m]

            2. Bitmap Memory: 也称为External Memroy ,是用来处理图像的。 在Android3.1之前,BitmapMemory是在Native Heap中进行分配, 但是这部分内存同样计入到了Java ObjectHeap中 。在3.1之后的版本中, BitmapMemory直接在Java Object Heap中进行分配,可以接收GC管理了。Bitmap是吃内存大户,要谨慎合理的使用。

            3. Native Memory: Native Code中使用malloc分配出来的内存,就是分配在Native Heap.   这部分内存不受Java Object Heap限制,可以自由使用。虽然这么说,但是不能过于贪心,如果过多的使用这部分内存,则可能引起GC被回收,造成app莫名的奔溃。

           在调试时可以使用一下命令查看app内存使用情况。

           adb shell dumpsys meminfo $package/$pid

           下面是dump相册的内存使用的结果。


shell@hammerhead:/ $ dumpsys meminfo com.google.android.apps.photos
dumpsys meminfo com.google.android.apps.photos
Applications Memory Usage (kB):
Uptime: 447210103 Realtime: 1130534558


** MEMINFO in pid 6511 [com.google.android.apps.photos] **
                   Pss  Private  Private  Swapped     Heap     Heap     Heap
                 Total    Dirty    Clean    Dirty     Size    Alloc     Free
                ------   ------   ------   ------   ------   ------   ------
  Native Heap     6253     5912        0        0    23808    21797     2010
  Dalvik Heap    10778    10676        0        0    31885    25032     6853
 Dalvik Other      988      988        0        0
        Stack      264      264        0        0
       Ashmem        4        4        0        0
      Gfx dev     6036     6036        0        0
    Other dev        4        0        4        0
     .so mmap      691      140        0        0
    .apk mmap     1163        0      768        0
    .ttf mmap       76        0       72        0
    .dex mmap    10432        4    10428        0
    .oat mmap     1440        0      476        0
    .art mmap      965      676       40        0
   Other mmap      470        8      368        0
   EGL mtrack    41280    41280        0        0
      Unknown      136      136        0        0
        TOTAL    80980    66124    12156        0    55693    46829     8863


 App Summary
                       Pss(KB)
                        ------
           Java Heap:    11392
         Native Heap:     5912
                Code:    11888
               Stack:      264
            Graphics:    47316
       Private Other:     1508
              System:     2700


               TOTAL:    80980      TOTAL SWAP (KB):        0


 Objects
               Views:      112         ViewRootImpl:        1
         AppContexts:        2           Activities:        1
              Assets:        2        AssetManagers:        2
       Local Binders:       31        Proxy Binders:       22
       Parcel memory:        9         Parcel count:       38
    Death Recipients:        1      OpenSSL Sockets:        0


 SQL
         MEMORY_USED:      552
  PAGECACHE_OVERFLOW:      316          MALLOC_SIZE:       62


 DATABASES
      pgsz     dbsz   Lookaside(b)          cache  Dbname
         4      272             52         5/22/4  /data/user/0/com.google.android.apps.photos/databases/disk_cache
         4      272             27         3/16/4  /data/user/0/com.google.android.apps.photos/databases/disk_cache (1)
         4       28             45         6/19/5  /data/user/0/com.google.android.apps.photos/databases/google_analytics_v4.db


关于Android 支持 4K 视频显示的问题总结

问题引入:          Android M 中声称支持原生的4K视频显示,这应该如何理解:原文地址: http://news.mydrivers.com/1/433/433988.htm    ...
  • coloriy
  • coloriy
  • 2017年07月05日 14:55
  • 861

Android 4K高清图片解码显示(3)Bitmap优化

上一篇介绍了Android中常用的解码方法。Bitmap是Android开发中经常要使用到的,但是由于Bitmap的使用会占用大量内存,容易造成OOM。Bitmap占用的内存为:像素总数 * 每个像素...
  • ccqqqqqq
  • ccqqqqqq
  • 2015年11月20日 15:46
  • 601

专业解读:超高清4K是什么?

你所不知道的4K超高清的来历         为了应对高清晰度电视的挑战,电影行业必须引进新的技术标准以便在技术层面上继续保持对电视的优势。于是在2004年7月1日,由好莱坞7大电影...
  • mazhitong1020
  • mazhitong1020
  • 2017年12月27日 10:01
  • 42

关于4K超高清电视 你必须知道的十件事

14K电视的基础知识知多少     【中关村在线电视频道原创】目前在国外很多网站中,我们经常会看到入诸如“关于某某你必须知道的N件事”,类似于这样的内容。这样的内容非常容易引起用户的共鸣和高...
  • hopewtc
  • hopewtc
  • 2015年08月21日 13:56
  • 2185

4K发展面临瓶颈,高清影音本如何破局?

毋庸置疑,4K时代已经来临,从4K视频,到4K影片,再到4K电视,可以说,4K所带来的震撼和影响丝毫不亚于当年的1080P。由于在显示的清晰度和综合效果上,4K都有着得天独厚的优势,所以,业界普遍认为...
  • feitianhanxue
  • feitianhanxue
  • 2015年12月04日 14:16
  • 337

【miscellaneous】最新HEVC/H.265 4K视频,显卡解码测试

转载自:http://bbs.zol.com.cn/diybbs/d34441_76103.html 4K这个概念也在最近几年开始流行了起来,无论是4K显示器、4K电视盒子,还是4K游戏对硬件的...
  • LG1259156776
  • LG1259156776
  • 2016年10月12日 23:15
  • 2813

c#图片生成缩略图,保持最高清的图片

c#缩略图,高清图片
  • u014479921
  • u014479921
  • 2016年08月10日 13:53
  • 309

Android平台Gallery2应用分析(七)---PhotoPage图片解码

PhotoPage图片解码 从前文可知,PhotoPage的图片解码始于PhotoPage的onResume()调用updateImageRequests()。先看下代码: private...
  • aqiao58
  • aqiao58
  • 2013年12月23日 16:15
  • 4041

android 图片解码显示流程

问题来源 android 可以在 gallery 里面显示内部存储的图片,支持 jpeg,png,gif,bmp 等,甚至文件类型和图片后缀名不一致,只要是图片文件就能显示,然后 git 只会显示第...
  • jingxia2008
  • jingxia2008
  • 2014年06月19日 15:04
  • 5606

WiFi时,显示图片高清图;网络状态为蜂窝移动网络时,显示图片缩略图http://gold.xitu.io/entry/57285c5e2e958a0068db2f9e

原文地址   由于要监听网络状态,在这里笔者推荐使用AFNetWorking。 1)在GitHub或者利用cocoaPod给项目导入第三方框架AFNetWorking。 2)...
  • x1198928367
  • x1198928367
  • 2016年07月06日 21:47
  • 367
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 4K高清图片解码显示(1)安卓内存分析
举报原因:
原因补充:

(最多只允许输入30个字)