Android 代码打印meminfo

旨在替代adb shell dumpsys meminfo packageName,在log打印meminfo,以便分析内存情况

ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
activityManager.getMemoryInfo(memoryInfo);
long totalMemory = Runtime.getRuntime().totalMemory();

这种代码获取的内存信息用处不大,需要使用Debug.MemoryInfo

Debug.MemoryInfo memoryInfo = new Debug.MemoryInfo();
Debug.getMemoryInfo(memoryInfo);
memoryInfo.getMemoryStats();

log打印如下:

关键代码如下:

    private static final String TAG_MEM_INFO = "MemInfo-packageName";

    private static void printDebugMeminfo() {
        Debug.MemoryInfo memoryInfo = new Debug.MemoryInfo();
        Debug.getMemoryInfo(memoryInfo);
        int getTotalPss = memoryInfo.getTotalPss();
        int nativePss = memoryInfo.nativePss;
        int dalvikPss = memoryInfo.dalvikPss;
        int otherPss = memoryInfo.otherPss;
        Log.i(TAG_MEM_INFO, "DebugMeminfo getTotalPss:" + aiKBToM(getTotalPss) + "  nativePss:" + aiKBToM(nativePss)
                + "  dalvikPss:" + aiKBToM(dalvikPss) + "  otherPss:" + aiKBToM(otherPss)
        );

        Map<String, String> memStats = memoryInfo.getMemoryStats();
        for (Map.Entry<String, String> entry : memStats.entrySet()) {
            String key = entry.getKey();
            String value = entry.getValue();
            Log.i(TAG_MEM_INFO, "DebugMeminfo key = " + String.format("%-22s", key) + " value = " + aiKBToM(value));
        }
    }

    private static String aiKBToM(String kb) {
        int k = Integer.parseInt(kb);
        if (k > 100 * 1024) {
            return (k / 1024) + " M";
        } else {
            return kb + " KB";
        }
    }

    private static String aiKBToM(long kb) {
        if (kb > 100 * 1024) {
            return (kb / 1024) + " M";
        } else {
            return kb + " KB";
        }
    }

    private static void printMeminfo(Activity activity) {
        ActivityManager activityManager = (ActivityManager) activity.getSystemService(Context.ACTIVITY_SERVICE);
        ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
        activityManager.getMemoryInfo(memoryInfo);
        long totalMemory = Runtime.getRuntime().totalMemory();
        long freeMemory = Runtime.getRuntime().freeMemory();
        long usedMemory = totalMemory - freeMemory;
        long availableMemory = memoryInfo.availMem;
        Log.i(TAG_MEM_INFO, "Meminfo totalMemory:" + aiKBToM(totalMemory / 1024) + " freeMemory:" + aiKBToM(freeMemory / 1024) +
                " usedMemory:" + aiKBToM(usedMemory / 1024) + " availableMemory:" + aiKBToM(availableMemory / 1024)
        );
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/698680.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python从0到100(三十二):lxml模块的学习与应用

学习目标 掌握使用lxml库提取数据的方法。理解lxml在数据处理后提取的数据类型。学习将元素&#xff08;element&#xff09;转换为字符串的方法。 1. lxml的安装 通过以下命令安装lxml库&#xff1a; pip install lxml2. lxml的使用 2.1 基础使用 导入lxml的etree库&…

用英语介绍端午节,柯桥零基础英语培训

端午节 Dragon Boat Festival 中国传统节日&#xff0c;农历五月初五。相传古代诗人屈原在五月初五投江自杀&#xff0c;后人把这天作为节日纪念他。有划龙舟比赛、包粽子等风俗。 A traditional Chinese festival on the fifth day of the fifth lunar month. Legend has i…

Doris 2.1 元数据更新

metadata_refresh_interval_sec 20

护理考试搜题软件哪个免费?分享九个搜题直接出答案的软件 #知识分享#微信

培养自己的阅读习惯&#xff0c;并不仅仅限于课外读物&#xff0c;还包括学术期刊、行业报告等&#xff0c;以不断提升自己的知识水平和思考能力。 1.彩虹搜题 这是一个公众号 是一款专门针对于大学生或者是成年自考等学生顺利完成证件考试的应用软件&#xff0c;这款软件涵…

AI巅峰对决:8款大模型边缘作文谁领风骚?

前几天我们预测高考作文题目&#xff0c;然后有朋友说我们预测对了&#xff0c;但是我们认真看&#xff0c;发现和全国卷作文人工智能有点交集&#xff0c;但是不能说预测对。 这次我们不预测了&#xff0c;而是让实力说话——邀请8个国产AI大模型参与一场别开生面的“边缘作文…

人工智能对聊天机器人训练数据的“淘金热”可能会耗尽人类编写的文本

人工智能对聊天机器人训练数据的“淘金热”可能会耗尽人类编写的文本 像ChatGPT这样的人工智能系统可能很快就会耗尽让它们变得更聪明的东西——人们在网上写下和分享的数万亿字。 Epoch AI研究集团发布的一项新研究预计&#xff0c;科技公司将在大约十年之交——2026年至203…

Spring--Bean的作用域,生命周期

Bean的作用域 Bean的作用域有很多种&#xff0c;在Spring Framework中支持6种&#xff08;其中有四种只有在web环境中才能生效&#xff09;&#xff0c;同时Spring还支持自定义Bean的范围。 Spring Framework中支持的6种范围&#xff1a; 作用域解释singleton每个Spring IoC…

【数学建模】微分方程的数值求解

微分方程的数值求解 一阶差分求解微分方程原理:四阶龙格-库塔方法应用:小船渡河问题: 进阶求二阶微分方程 一阶差分求解微分方程原理: d y d x f ( x n , y n ) \dfrac{dy}{dx}f(x_n,y_n) dxdy​f(xn​,yn​) y n 1 − y n x n 1 − x n f ( x n , y n ) \dfrac{y_{n1}-y_n…

React+TS前台项目实战(一)-- 项目初始化配置及开此系列的初衷

文章目录 前言一、初始化项目二、基础配置1. 项目目录及说明如下2. TS版本使用Craco需注意 总结 前言 前面 后台管理系统实战 系列教程暂时告一段落了&#xff0c;想了解全局各种配置的可自行查看。本次教程将重点介绍React前台项目的实操&#xff0c;关于具体的配置&#xff…

51单片机-数码管显示多个

目录 简介: 一. 简单全亮 二. 控制单个变化 三. 2024 书接上回 51单片机-数码管显示单个 http://t.csdnimg.cn/Ii6x0 简介: 51 单片机作为控制核心&#xff0c;可以与数码管相连接来实现数字的显示。 数码管通常有多个段&#xff0c;通过控制这些段的点亮和熄灭状态&…

弘君资本炒股技巧:银行降准对股票的影响?

银行降准会带动股票市场变得相对活泼起来&#xff0c;假如降准前股价在跌落状态&#xff0c;降准能够起到一定缓冲股价跌落的效果。 什么是降准&#xff1a;降准指的是减少银行在央行的存款准备金率&#xff0c;也便是说银行需求存放于央行的资金份额下降&#xff0c;银行能够…

Tensorflow2.10 完成图像分割任务

前言 图像分割在医学成像、自动驾驶汽车和卫星成像等方面有很多应用&#xff0c;本质其实就是图像像素分类任务&#xff0c;也就是使用深度学习模型为输入图像的每个像素分配一个标签&#xff08;或类&#xff09;。 准备 本文的准备如下&#xff0c;使用 pip 安装如下配置&…

动态内存管理<C语言>

导言 在C语言学习阶段&#xff0c;指针、结构体和动态内存管理&#xff0c;是后期学习数据结构的最重要的三大知识模块&#xff0c;也是C语言比较难的知识模块&#xff0c;但是“天下无难事”&#xff0c;只要认真踏实的学习&#xff0c;也能解决&#xff0c;所以下文将介绍动态…

成都石室中学学子游汶鑫展现新时代好少年风采 拾金不昧获表彰

在繁华的都市中,每天都有无数的故事在上演,而其中的一些故事,却以其独特的温暖和正能量,深深打动着我们的心灵。近日,成都石室中学初中学校的一名学生游汶鑫同学,就用他的实际行动,诠释了新时代好少年的风采,展现了中华民族传统美德在当代青少年身上的生动体现。 成都石室中学初…

# Mac下反编译微信小程序获得源码

Mac下反编译微信小程序获得源码 所需工具 mac版微信 最好3.8以上版本node环境wxappUnpacker wxappUnpacker: 小程序反编译(支持分包) 小程序反编译(支持分包) https://gitee.com/ksd/wxappUnpacker 大体步骤 用微信搜索打开对应小程序&#xff0c;为的是把产物文件加载到…

郑州小区火灾防范需重视:可燃气体报警器检测的日常管理与维护

近日&#xff0c;郑州市一小区发生了一起严重的火灾事故&#xff0c;这起事故不仅给遇难者家属带来了巨大悲痛&#xff0c;也再次引发了社会对于小区火灾防范与应急处理的关注。 在对此次事故进行深入分析的同时&#xff0c;我们不得不思考可燃气体报警器在小区火灾检测中的重…

选课清单--数据结构课程设计(十字链表+哈希表实现)

题目如上(九院版&#xff0c;被老师要求选这个题目做&#xff0c;不知道还有没有别的学校是这种题目&#xff0c;都可以相互借鉴hh) 代码写的有冗余&#xff0c;结构体应该有三个&#xff0c;一个学生&#xff0c;一个课程&#xff0c;一个十字链表的结构体&#xff0c;如果公…

如何有效处理服务器后台密码暴露

服务器后台密码的暴露是信息安全领域中的严重事件&#xff0c;它可能引发未经授权的数据访问、恶意软件植入或系统功能滥用等一系列问题。本文将探讨几种处理服务器后台密码暴露的有效策略&#xff0c;包括紧急响应步骤、密码安全增强措施及长期预防机制&#xff0c;并提供实际…

【LeetCode 第 401 场周赛】K秒后第 N 个元素的值

文章目录 1. K秒后第 N 个元素的值&#x1f197; 1. K秒后第 N 个元素的值&#x1f197; 题目链接&#x1f517; &#x1f427;解题思路&#xff1a; 前缀和 小规律&#x1f34e; &#x1f34e; 从上图观察可知&#xff0c;规律一目了然&#xff0c;arr[i] arr[i] 对上一…

【机器学习】基于3D CNN通过CT图像分类预测肺炎

1. 引言 1.1. 研究背景 在医学诊断中&#xff0c;医生通过分析CT影像来预测疾病时&#xff0c;面临一些挑战和局限性&#xff1a; 图像信息的广度与复杂性&#xff1a; CT扫描生成的大量图像对医生来说既是信息的宝库也是处理上的负担。每组CT数据可能包含数百张切片&#xf…