Android获取当前应用分配的最大内存和目前使用内存的方法

 更新时间:2019年02月21日 15:54:59   作者:一往无前-千夜  
今天小编就为大家分享一篇关于Android获取当前应用分配的最大内存和目前使用内存的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

在Android里,程序内存被分为2部分:native和dalvik,dalvik就是我们普通的Java使用内存,分析堆栈的时候使用的内存。我们创建的对象是在这里面分配的,对于内存的限制是 native+dalvik 不能超过最大限制. Android 原生系统一般默认16M,但是国内手机一般都是特殊定制的,都有修改系统的内存大小,所有有时候,要查看具体应用系统分配的内存大小,还是需要实际去测试的,

测试方法如下:

方式一:

ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
  //最大分配内存
  int memory = activityManager.getMemoryClass();
  System.out.println("memory: "+memory);
  //最大分配内存获取方法2
  float maxMemory = (float) (Runtime.getRuntime().maxMemory() * 1.0/ (1024 * 1024));
  //当前分配的总内存
  float totalMemory = (float) (Runtime.getRuntime().totalMemory() * 1.0/ (1024 * 1024));
  //剩余内存
  float freeMemory = (float) (Runtime.getRuntime().freeMemory() * 1.0/ (1024 * 1024));
  System.out.println("maxMemory: "+maxMemory);
  System.out.println("totalMemory: "+totalMemory);
  System.out.println("freeMemory: "+freeMemory);

方式二:

Runtime rt=Runtime.getRuntime();
long maxMemory=rt.maxMemory();
log.i("maxMemory:",Long.toString(maxMemory/(1024*1024)));
這個可以直接得到app可使用的最大memory size算出來是MB, 获得的是heapgrowthlimit
1,maxMemory()方法获取系统可为APP分配的最大内存,
2,totalMemory() 获取APP当前所分配的内存heap空间大小。
先看机器的内存限制,在/system/build.prop文件中:
heapgrowthlimit就是一个普通应用的内存限制,用ActivityManager.getLargeMemoryClass()获得的值就是这个。
而heapsize是在manifest中设置了largeHeap=true 之后,可以使用的最大内存值
结论就是,设置largeHeap的确可以增加内存的申请量。但不是系统有多少内存就可以申请多少,而是由dalvik.vm.heapsize限制。
你可以在app manifest.xml加 largetHeap=true
可以申請較多的記憶體 ,但還是有機會爆掉.
<application
   .....
   android:label="XXXXXXXXXX"
   android:largeHeap="true">
  .......
</application>
cat /system/build.prop  //读取这些值
getprop dalvik.vm.heapsize //如果build.prop里面没有heapsize这些值,可以用这个抓取默认值
setprop dalvik.vm.heapsize 256m //设置
-----------------------  build.prop 部分内容 ---------------------
dalvik.vm.heapstartsize=8m
dalvik.vm.heapgrowthlimit=96m
dalvik.vm.heapsize=384m
dalvik.vm.heaputilization=0.25
dalvik.vm.heapidealfree=8388608
dalvik.vm.heapconcurrentstart=2097152
ro.setupwizard.mode=OPTIONAL
ro.com.google.gmsversion=4.1_r6
net.bt.name=Android
dalvik.vm.stack-trace-file=/data/anr/traces.txt

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • Android稳定性:可远程配置化的Looper兜底框架

    Android稳定性:可远程配置化的Looper兜底框架

    这篇文章主要为大家介绍了Android稳定性可远程配置化的Looper兜底框架实例实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Android EasyBarrage实现轻量级弹幕效果

    Android EasyBarrage实现轻量级弹幕效果

    本篇文章主要介绍了Android EasyBarrage实现轻量级弹幕效果,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Android仿京东分类模块左侧分类条目效果

    Android仿京东分类模块左侧分类条目效果

    这篇文章主要为大家详细介绍了Android仿京东分类模块左侧分类条目效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Android仿微信新消息提示音

    Android仿微信新消息提示音

    本篇文章主要介绍了Android仿微信新消息提示音的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-04-04
  • flutter实现底部不规则导航栏

    flutter实现底部不规则导航栏

    这篇文章主要为大家详细介绍了flutter实现底部不规则导航栏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • Android仿简书长按文章生成图片效果

    Android仿简书长按文章生成图片效果

    使用简书APP的同学都知道,简书有这样一个功能;文章页长按内容时底部会出现一个 生成图片分享 的按钮,点击之后就可以将当前的文章生成一张长图片;这张图片可以保存到本地或分享给好友,同时还可为图片设置成为白和黑两种风格,很有艺术范
    2017-03-03
  • Android中的xml解析介绍

    Android中的xml解析介绍

    大家好,本篇文章主要讲的是Android中的xml解析介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • Android自定义view仿淘宝快递物流信息时间轴

    Android自定义view仿淘宝快递物流信息时间轴

    这篇文章主要为大家详细介绍了Android自定义view仿淘宝快递物流信息时间轴,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Android布局技巧之include、merge与ViewStub标签的巧用

    Android布局技巧之include、merge与ViewStub标签的巧用

    Android 官方提供了三个用来优化布局的标签,分别是include、merge与ViewStub,下面这篇文章主要给大家介绍了关于Android布局技巧之include、merge与ViewStub标签巧用的相关资料,需要的朋友可以参考下
    2018-06-06
  • Android入门之使用OKHttp组件访问网络资源

    Android入门之使用OKHttp组件访问网络资源

    这篇文章主要为大家详细介绍了Android如何使用OKHttp组件访问网络资源功能,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2022-12-12

最新评论