Android 应用内存限制

Android系统对每个应用的内存使用设有限制,从16M到128M不等,可通过adb shell查看具体限制。应用可通过Runtime或ActivityManager获取最大堆限制。对于内存要求高的应用,可以考虑在native层实现部分功能以优化内存使用。

     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层实现,从而使应用高效运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值