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实现一键锁屏和一键卸载的方法实例

    android实现一键锁屏和一键卸载的方法实例

    这篇文章主要给大家介绍了关于android如何实现一键锁屏和一键卸载的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-05-05
  • ProxyWidget和Element更新的正确方式详解

    ProxyWidget和Element更新的正确方式详解

    这篇文章主要为大家介绍了ProxyWidget和Element更新的正确方式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Android 调用系统相机拍摄获取照片的两种方法实现实例

    Android 调用系统相机拍摄获取照片的两种方法实现实例

    这篇文章主要介绍了Android 调用系统相机拍摄获取照片的两种方法实现实例的相关资料,一种是通过Bundle来获取压缩过的照片,一种是通过SD卡获取的原图,需要的朋友可以参考下
    2016-11-11
  • Android单元测试之对Activity的测试示例

    Android单元测试之对Activity的测试示例

    本篇文章主要介绍了Android单元测试之对Activity的测试示例,具有一定的参考价值,有兴趣的可以了解一下
    2017-08-08
  • Android 个人理财工具二:使用SQLite实现启动时初始化数据

    Android 个人理财工具二:使用SQLite实现启动时初始化数据

    本文主要介绍 Android 使用SQLite实现启动时初始化数据,这里对SQLite 的数据库进行详解,附有示例代码,有兴趣的小伙伴可以参考下
    2016-08-08
  • 详解OpenGL Shader抗锯齿的实现

    详解OpenGL Shader抗锯齿的实现

    普通绘制圆形形状时可以看到图形边缘会有明显锯齿现象并不像真实圆形形状一样圆润边缘平滑。本文将介绍如何通过自制函数实现抗锯齿,需要的可以参考一下
    2022-02-02
  • Android屏幕适配工具类 Android自动生成不同分辨率的值

    Android屏幕适配工具类 Android自动生成不同分辨率的值

    这篇文章主要为大家详细介绍了Android屏幕适配工具类,Android自动生成不同分辨率的值,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • Android仿IOS ViewPager滑动进度条

    Android仿IOS ViewPager滑动进度条

    这篇文章主要为大家详细介绍了Android仿IOS ViewPager滑动进度条的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • 如何利用Kotlin实现极简回调

    如何利用Kotlin实现极简回调

    这篇文章主要给大家介绍了关于如何利用Kotlin实现极简回调的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • Android之TextView自适应大小

    Android之TextView自适应大小

    对于设置TextView的字体默认大小对于UI界面的好看程度是很重要的,小屏幕设置的文字过大或者大屏幕设置的文字过小都造成UI的不美观。现在就让我们学习自适应大小的TextView控件。下面跟着小编一起来看下吧
    2017-03-03

最新评论