循环不断打印出Android系统中某个进程的内存使用情况

Android面试题 整理八个常见的Android面试题。 1.handler如何进行线程间通信? 负责跨线程通信,这是因为在主线程不能做耗时操作,而子线程不能更新UI,所以当子线程中进行耗时操作后需要更新UI时,通过Handler将有关UI的操作切换到主线程中执行。 具体分为四大要素: Message(消息):需要被传递的消息,消息分为硬件产生的消息(如按钮、触摸)和软件生成的消息。 MessageQueue(消息队列):负责消息的存储与管理,负责管理由 Handler发送过来的Message。 ... 阅读详情

前言:

由于移动设备的内存、CPU、GPU资源较为有限,在调试Android系统或应用软件的时候,经常要了解内存占用的情况,所以dumpsys是经常用到。

而为了更准确的了解各个时刻的内存状况,可以配合Linux循环语句while do done来达到循环不断的打印出内存的实时占用情况。


方法:

首先,可以如下打印出Android系统中某个进程的内存使用情况:

 $ adb shell dumpsys meminfo com.android.launcher
输出了非常详尽的内存使用情况:

Applications Memory Usage (kB):
Uptime: 270233 Realtime: 270228

** MEMINFO in pid 2783 [com.android.launcher] **
                         Shared  Private     Heap     Heap     Heap
                   Pss    Dirty    Dirty     Size    Alloc     Free
                ------   ------   ------   ------   ------   ------
       Native        0        0        0    18100     6470      357
       Dalvik    23188     5072    23096    31944    21599    10345
       Cursor        0        0        0                           
       Ashmem        0        0        0                           
    Other dev    25728     1072     1492                           
     .so mmap     1508     2156     1036                           
    .jar mmap        0        0        0                           
    .apk mmap      377        0        0                           
    .ttf mmap      345        0        0                           
    .dex mmap     1583        0        0                           
   Other mmap      150       16      116                           
      Unknown     5500      424     5496                           
        TOTAL    58379     8740    31236    50044    28069    10702
 
 Objects
               Views:      341         ViewRootImpl:        1
         AppContexts:       35           Activities:        1
              Assets:        5        AssetManagers:        5
       Local Binders:       17        Proxy Binders:       35
    Death Recipients:        0
     OpenSSL Sockets:        0
 
 SQL
         MEMORY_USED:     1104
  PAGECACHE_OVERFLOW:     1011          MALLOC_SIZE:       62
 
 DATABASES
      pgsz     dbsz   Lookaside(b)          cache  Dbname
         4      968             95        9/24/10  /data/user/0/com.android.launcher/databases/launcher.db

配合Linux shell脚本语句while do done实现循环调用(间隔时间是一秒):

$ while true; do adb shell dumpsys meminfo com.android.launcher; sleep 1; done


间隔时间还可以这样表示:

sleep 1      睡眠1秒
sleep 1s    睡眠1秒
sleep 1m   睡眠1分
sleep 1h    睡眠1小时


android应用内存占用测试(每隔一秒打印procrank的信息) 使用procrank工具进行,android应用内存占用测试,写python脚本,每隔一秒打印procrank的信息 立即下载

相关推荐

Xilinx UltraScale+ FPGA实战:手把手教你实现USB3.0设备开发(附原理图+代码)

本文详细介绍了如何使用Xilinx UltraScale+ FPGA开发USB3.0设备,涵盖硬件设计、Vivado工程配置、Petalinux系统定制及功能测试全流程。通过实战案例和优化技巧,帮助开发者快速掌握高速数据传输实现方法,提升嵌入式系统开发效率。

weixin_29159995的博客 209

android查看每个app的内存占用情况

android查看每个app的内存占用情况 adb shell dumpsys meminfo 会得到如下信息: Currently running services:   meminfo ------------------------------------------------------------------------------- DUMP OF S

移动开发 7489

第7.1章:StarRocks性能调优——查询分析

第7.1章:StarRocks性能调优——查询分析

爱吃辣条的博客 6476

android 使用内存打印,android调试:代码中打印内存信息

一、Debug和ActivityManager的相关方法:public void printMemoryInfo() {String tag = "APPActivity";final ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);ActivityManager.Memo...

weixin_34533343的博客 1216

AF3 ProteinDataset类的_patch方法解读

AlphaFold3 protein_dataset模块 ProteinDataset 类  _patch 方法的主要目的是围绕锚点残基(anchor residues)裁剪蛋白质数据,提取一个局部补丁(patch)作为模型输入。

qq_27390023的博客 1148

deepin启动异常处理

修复的命令在执行时会输出大量的修复信息,正常情况下修复完之后输入exit命令回车后,即可正常启动系统。

whxxiang的博客 4370

android -- 进程内存,CPU及内核打印输出

工欲善其事必先利其器,这里记录下几种android系统查看的手段汇集一下,先记下我这些天用的一些,后面再陆续添加: 1、查看内存 cat /proc/cpuinfo 系统CPU的类型等多种信息。 cat /proc/meminfo 系统内存使用信息 空闲内存=free+buffers+cached=total-used 通过读取文件/proc/meminfo的信息获取Mem

andyhuabing的专栏 5156

VMware Workstation Pro 16 安装 Ubuntu 20.04

VMware Workstation Pro 16 安装 ubuntu 20.04目录环境VMware Workstation下载Ubuntu 20.04下载安装过程 目录 环境 Windows 10 Workstation 16 Pro for Windows Ubuntu 20.04 LTS 64位 desktop版本 VMware Workstation下载 链接: https://www.vmware.com/products/workstation-pro/workstation-pro-eval

qq_45642410的博客 1万+

Android 源码 输入系统初识

触摸屏与键盘是 Android 最普遍也是最标准的输入设备。当输入设备可用时,Linux 内核会在 /dev/input/ 下创建对应的名为 event0 ~ eventN 或其他名称的设备节点。而当输入设备不可用时,则会将对应的节点删除。 当用户操作输入设备时,Linux 内核接收到相应的硬件中断,然后将中断加工成原始的输入事件数据并写入其对应的设备节点中,在用户空间可以通过 read() 函数将事件数据读出。 Android 输入系统的工作原理概括来说,就是监控 /dev/input/ 下的所有设备节

洪伟的专栏 722

Smart PLC高速脉冲输入计米轮模块(编码器测速/计米详细讲解)

线缆行业单绞机PLC控制算法详细解读可以参看下面的文章链接:线缆行业单绞机控制算法(详细图解+代码)_RXXW_Dor的博客-优快云博客在了解单绞机之前需要大家对收放卷以及排线控制有一定的了解,不清楚的可以参看下面几篇博客,这里不再赘述,受水平和能力所限,文中难免出现错误和不足之处,诚恳的欢迎大家批评和指正。PLC张力控制(开环闭环算法分析)_RXXW_Dor的博客-优快云博客_plc闭环控制实例。SMART PLC时间间隔定时器应用(高速脉冲测频/测速)_RXXW_Dor的博客-优快云博客。

RXXW_Dor的博客 2819

CloudCompare 二次开发(6)——插件中拖拽添加Qt窗口(区域生长算法为例)

手动拖拽的方式搭建Qt对话框界面的制作流程,以PCL中的点云区域生长算法为例进行制作。

点云侠的博客 2153

android home键返回显示开屏页_(1)Android输入系统

本篇是基于学习深入理解Android系列,以及自己工作中触及到的领域的一些学习及总结,仅供自己学习,不涉及任何版权纠纷。 深入理解Android输入系统本章主要内容:1. 研究输入事件从设备节点开始到窗口处理函数的流程2. 介绍原始输入事件的读取与加工3. 研究事件派发机制4. 讨论事件在输入系统与窗口之间传递与反馈的过程5....

weixin_39876856的博客 245

【首发独家】华为OD机试 - 服务中心选址、服务中心的最佳位置(C 语言解题)

最近更新的博客 华为 od 2023 | 什么是华为 od,od 薪资待遇,od 机试题清单 华为 OD 机试真题大全,用 Python 解华为机试题 | 机试宝典 【华为 OD 机试】全流程解析+经验分享,题型分享,防作弊指南 华为 od 机试,独家整理 已参加机试人员的实战技巧 本篇华为 OD 机试题解:服务中心选址、服务中心的最佳位置

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 1万+

Android Studio 调试

编写代码很多时候都会“差强人意”,很难一次获得想要的结果,出现错误的时候需要查找错误的原因,这种查找的过程可以称为“程序调试”。一般来讲程序员百分之十的时间写代码,百分之九十的时间都在调试,因此要认识到调试的重要性。调试的方式有多种,这里介绍最常用的两种:Logcat调试方式和断点调试方式。2.3.1 Logcat调试Logcat调试方式很简单,在可能出现错误的地方将变量的值打印出来,方便分析总结

张亚运的专栏 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

安卓TCP通信版本2

PC做服务器,安卓做客户端。 安卓获取输入框的内容并发送,然后等待接收服务器的消息 服务器先行开启,接收到客户端的数据,然后回复消息。 实现了对线程类的封装,通过按钮启动线程发送并接收 服务器代码(java版): import java.io.*; import java.net.*; /* 需求:定义端点接收数据并打印在控制台 服务端: 1.创建服务端s...

weixin_30577801的博客 120

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【实习周记】Android getevent.c源码分析

【实习周记】Android getevent.c源码分析 一.概述 getevent和sendevent是Android系统下的两个工具 在cmd 命令行下输入adb shell进入Android设备的shell 输入getevent ,获取当前设备的事件 输入sendevent ,模拟设备产生事件 这两个命令的源码在Android系统system/core/toolbox/目录下, 名字分别为g...

LeeDuoZuiShuai的博客 2953

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Android卡顿监控

一、概述 如果想要自己实现一个简单的卡顿监控功能,可以看下这编文章。我们都知道,Android程序 是基于事件驱动的,程序主线程一直在执行Looper的loop,loop的循环不断的读取事件进行处理,没有事件就等待着,退出程序也就退出这个循环。在Looper中,处理消息前后会打印log: // This must be in a local variable, in case a UI event sets the logger final Printer l

ganduwei的博客 873

安卓版的c语言实现简单的钟表程序代码

#include #include #include int main() { int secondCount = 0; // 用于记录秒数 time_t rawtime; struct tm *timeinfo; }

qq_32257509的博客 180

android tcp组件,Android使用socket创建简单TCP连接的方法

本文实例讲述了Android使用socket创建简单TCP连接的方法。分享给大家供大家参考,具体如下:不管是在Java还是Android编程中,通信都是及其重要的一部分。有连接的socket编程,重要性自然毋庸置疑。这里以一个简单的demo演示一个最基本的socket编程。先写服务端。服务端是Java代码。笔者懒得装eclipse等编程软件,就是直接notepad编程,dos运行的。服务端一般是新...

weixin_34340606的博客 730

c++程序和java程序socket通信Android

java服务端程序放到public void onCreate(Bundle savedInstanceState) {里面 //======================localsocket通信机制====================================================== // 接收线程 Thread local_r

crl6的博客 668

《Android性能优化》卡顿优化 : 卡顿检测

本文只作总结,不写细节,可用于面试知识点快速复习。 需要深入了解细节的朋友请看完总结后带着问题去百度。 卡顿原因 出现卡顿的主要原因是主线程做了一些不该做的事,或者主线程做不了事情了,即主线程被某些耗时任务阻塞导致UI绘制的工作无法在下一帧到来前的16.66ms内(每一帧的时间间隔 =1s / 屏幕刷新频率60hz =16.66ms)完成,导致出现跳帧现象。 卡顿检测 方法 一 ...

luzaiyy611的博客 609

Android消息处理机制 handler looper messagequene

Android消息处理机制 2011-10-28 13:36 2396人阅读 评论(5) 收藏 举报 Google参考了Windows的消息处理机制,在Android系统中实现了一套类似的消息处理机制。学习Android的消息处理机制,有几个概念(类)必须了解: 1.       Message 消息,理解为线程间通讯的数据单元。例如后台线程在处理数据完毕后需要更新

Z153041121的专栏 1420

android java 创建软连接,Android使用socket创建简单TCP连接的方法

本文实例讲述了Android使用socket创建简单TCP连接的方法。分享给大家供大家参考,具体如下:不管是在Java还是Android编程中,通信都是及其重要的一部分。有连接的socket编程,重要性自然毋庸置疑。这里以一个简单的demo演示一个最基本的socket编程。先写服务端。服务端是Java代码。笔者懒得装eclipse等编程软件,就是直接notepad编程,dos运行的。服务端一般是新...

weixin_42309722的博客 380

Java高级补充(Socket服务端、客户端)、Handler类、安卓Socket传数据、WebView

Socket服务端简单地API: 主要用到以下几个API:ServerSocket用来设置端口号、accept用来和服务端连接、getInputStream用来获取输入流、read用来读取输入流里面的数据,存放在提前开辟好的缓冲区里面。 import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; public class Main { pu

FHN优快云 1152

Android 基于Socket的聊天室

Socket是TCP/IP协议上的一种通信,在通信的两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路。一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信。 Client

kkwant的博客 2185
上一篇: Android Graphics - ColorFilter
下一篇: Android ANR问题分析方法
海之子99
博客等级 码龄21年 53粉丝 147原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值