android开发获取内存、Native内存和虚拟内存的方式
获取各种内存的方法
1、获取内存使用率
public static double getMemoryUsageRate() {long runtimeMaxMemory = getRuntimeMaxMemory();if (runtimeMaxMemory == -1) {return 0;}double usedRate = 0;try {double usedMem = (double) (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory());double maxMem = (double) runtimeMaxMemory;usedRate = usedMem / maxMem;} catch (Exception e) {e.printStackTrace();usedRate = 0;}return usedRate;
}private static long getRuntimeMaxMemory() {if (mMaxJavaMemory == -1) {try {Runtime rt = Runtime.getRuntime();mMaxJavaMemory = rt.maxMemory();} catch (Exception e) {}}return mMaxJavaMemory;
}
2、获取Native内存使用大小
public static long getUsedJavaMemorySizeInByte() {return Debug.getNativeHeapAllocatedSize();
}
3、获取虚拟内存使用大小
private static long getUsedVmSize() {String status = String.format("/proc/%s/status", android.os.Process.myPid());try {String content = getStringFromFile(status).trim();String[] args = content.split("\n");for (String arg : args) {if (arg.startsWith("VmSize")) {Pattern pattern = Pattern.compile("\\d+");Matcher matcher = pattern.matcher(arg);if (matcher.find()) {return Long.parseLong(matcher.group());}}}if (args.length > 12) {Pattern pattern = Pattern.compile("\\d+");Matcher matcher = pattern.matcher(args[12]);if (matcher.find()) {return Long.parseLong(matcher.group());}}} catch (Throwable e) {return -1;}return -1;
}private static String getStringFromFile(String filePath) throws Exception {File file = new File(filePath);StringBuilder sb = new StringBuilder();try (FileInputStream inputStream = new FileInputStream(file);BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {String line;while ((line = reader.readLine()) != null) {sb.append(line).append("\n");}}return sb.toString();
}
android开发获取内存、Native内存和虚拟内存的方式相关推荐
- Android开发中常见的内存泄露案例以及解决方法总结
Android开发中常见的内存泄露案例以及解决方法总结 参考文章: (1)Android开发中常见的内存泄露案例以及解决方法总结 (2)https://www.cnblogs.com/shen-hua ...
- android 获取加速度传感器值,Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】...
本文实例讲述了Android开发获取传感器数据的方法.分享给大家供大家参考,具体如下: package mobile.android.sensor; import java.util.List; im ...
- android开发中磁场传感器,Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】...
本文实例讲述了Android开发获取传感器数据的方法.分享给大家供大家参考,具体如下: package mobile.android.sensor; import java.util.List; im ...
- 【Android开发学习笔记之一】5大布局方式详解
Android中常用的5大布局方式有以下几种: 线性布局(LinearLayout):按照垂直或者水平方向布局的组件. 帧布局(FrameLayout):组件从屏幕左上方布局组件. 表格布局(Tabl ...
- Android平台上的Native内存分析
文章目录 背景 UE4的内存统计 memreport MemoryProfiler2 LLM Android进程内存 DDMSMemoryAnalyzer 背景 UE4游戏在Android上的进程内存 ...
- android开发获取手机,通过ADB获取Android手机信息,获取手机信息
通过ADB获取Android手机信息,获取手机信息 原文:https://blog.csdn.net/fasfaf454/article/details/51438743 1.获取手机系统信息( CP ...
- android开发获取应用本身耗电量_别找了,Android常用自动化工具全在这儿了!
Android常用自动化工具 ADB - 是Google提供的为Android编写UI测试用例的自动化工具, Android开发/测试人员不可替代的强大工具 uiautomator - 是Google ...
- Android开发获取当前经纬度和详细位置信息(原生代码实现)简单案例
文章目录 Android定位(经纬度+当前位置信息) 申请权限 LocationManage位置管理器 完整代码 Android定位(经纬度+当前位置信息) 我相信大家在Android开发中应该都有遇 ...
- android开发获取imei码,Android中获取IMEI码的方法
我们在开发项目的时候,通常要获取手机的IMEI码,这是开发的必备需求,接下来,爱站技术频道小编就告诉大家Android中获取IMEI码的方法,希望本文的介绍能提高大家的水平. 核心代码:Imei = ...
最新文章
- centos7grub2 引导win10
- 机器学习中的优化方法小结
- 拦截器获取不到sesssion作用域的值_ES6--块级作用域
- arcgis api for flex 开发入门(二)map 的创建
- 微信公众平台开发:进阶篇(Web App开发入门)
- 机器学习-损失函数 (转)
- wsl安装配置vscode(亲测有用)
- 蓝牙的发展史及版本演进
- 51nod1600-Simple KMP【SAM,树链剖分】
- python 流式计算框架_流式计算的三种框架:Storm、Spark和Flink
- Python进阶之“属性(property)”详解
- php xml 返回 微信,php版微信返回用户text输入的方法
- 第五章:关于ESearch的应用
- 《SAP入门经典(第4版•修订版)》——3.2 SAP硬件基础知识
- composer 的快速安装
- What is DevOps?
- Winform实现简单的记住用户名密码功能
- 基于Hadoop 的分布式网络爬虫技术学习笔记
- ps 自动生成html代码,ps怎么生成html网页文件 PS生成html网页文件的具体教程
- 从西天取经的九九八十一难来看Java设计模式:模板方法模式
热门文章
- 链表-检查链表长度是奇数还是偶数
- 【机器学习】之第十三章——半监督学习
- 智能小车一《arduino是什么》
- 识别表格变成电子版的软件有什么?这些识别软件分享给你
- MFC控件使用说明书
- 看雪学院-OllyDBG入门系列(三)笔记
- ADAMS启动时出现MSC_LICENSE_FILE=27500
- Si24R2F+ 2.4GHz超低功耗有源RFID无线发射芯片 畜牧业标签、智能冷链物流、资产管理
- Educational Codeforces Round 133 (Rated for Div. 2)
- CPU卡程序设计实例(十二)ESAM模块字节接收函数