Android 应用内存限制

     Android系统为了保护有限的内存空间,对单个应用可使用的内存空间进行了限制,最初是16M,后来是32M,目前有的手机已达到128M或更大。

    连接手机后,通过#adb shell cat /system/build.prop来查看,信息如下:

        dalvik.vm.heapstartsize=8m       应用启动时系统初始分配的内存大小

dalvik.vm.heapgrowthlimit=128m       在应用堆大小受控制情况下,应用最大内存限制(仅仅针对dalvik堆,不包括native堆)

dalvik.vm.heapsize=512m   在应用堆大小不受控制情况下,应用可分配的最大堆大小


    在程序中,可以通过如下方式得到最大堆限制:

          1. 通过Java应用的运行时环境类查询
   Runtime.getRuntime().maxMemory();   //无法构建Runtime实例,其为单例模式
  2. 通过ActivityManager查询
   ActivityManager mActivityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE); 
   //注意通过context和application得到的服务的区别 (ActivityManager)application.getSystemService(ACTIVITY_SERVICE); 
   mActivityManager.getMemoryClass();
   mActivityManager.getLargeMemoryClass();


    对于一些内存要求较高的应用,可以将部分耗内存功能在native层实现,从而使应用高效运行。

你可能感兴趣的:(Android基础知识)