Android使用smem分析系统内存

简介: 笔记

smem是分析系统内存的便利工具。


目录


  1. 快速使用
  2. 介绍
  3. 使用smem的步骤概述
  4. 详细介绍smem
  • 4.1 安装smem工具
  • 4.2 构建'smemcap'(或者使用构建好的二进制文件)
  • 4.2.1 预建二进制(适用于G1)
  • 4.3 在您的Android机器上安装'android-smemcap'
  • 4.4 收集安卓机器上的内存信息
  • 4.5 从系统中检索收集的数据
  • 4.6 查看主机上的数据
  • 4.7 查看信息和图表
  • 4.8 示例图表
  • 4.9 提供其他系统信息
  • 5 使用图形查看器
  • 6 分析结论


快速使用


如果你是一个急性子,这里有一些快速的应用步骤:

* download smem
  * hg clone http://selenic.com/repo/smem
  * cd smem
* (install python-matplotlib and python-matplotlib-tk, if needed)
* cross-compile smemcap for Android, using something like 'agcc'
  * agcc smemcap.c -o android-smemcap
* install android-smemcap onto your target
  * adb shell mkdir /data/smem
  * adb push android-smemcap /data/smem
* collect memory information on target
  * adb shell "/data/smem/android-smemcap >/data/smem/memdata1.tar"
* retreive the collected data
  * adb pull /data/smem/memdata1.tar .
* review the data on host
  * smem -S memdata1.tar


介绍


smem是一个内存工具,用于分析Linux系统上的内存使用量。 Android提供的'ps'工具仅显示VSIZE和RSS内存列。 即使您在Android系统上安装busybox,该工具的'ps'也只会显示VSIZE值。 VSIZE是虚拟映像的总大小,RSS是驻留集大小 - 内核对特定进程占用的物理页数。 这些数字对于指示特定应用程序或守护程序的内存中的实际成本并不是非常有用。

smem网站上有如下描述:

smem是一个可以在Linux系统上提供大量内存使用情况报告的工具。 与现有工具不同,smem可以报告比例集大小(PSS),这是虚拟内存系统中库和应用程序使用的内存量的更有意义的表示。
由于大部分物理内存通常在多个应用程序之间共享,因此称为驻留集大小(RSS)的内存使用的标准度量将显着高估内存使用量。 相反,PSS测量每个应用程序的每个共享区域的“公平份额”,以便在引导期间给出系统活动的实际度量。

smem包含一个针对于android的数据捕获工具,以及一个用于开发的主机分析工具。


使用smem的步骤概述


要在Android系统上使用smem,您需要执行以下步骤:

  • 在主机上安装smem工具
  • 在主机上构建smemcap(或使用预先构建的二进制文件)
  • 在Android目标系统上安装smemcap
  • 使用smemcap从目标上的/ proc捕获内存信息
  • 从系统中检索收集的数据
  • 在主机上使用smem工具和收集的数据
  • 查看内存信息和图表
  • [可选]提供其他系统信息
    这些步骤将在以下部分中详细描述。 本文是基于Android 1.5软件和SDK编写的。


详细介绍


安装smem

smem下载链接

使用mercurial工具下载(hg)

$ hg clone http://selenic.com/repo/smem destination directory: smem requesting all changes adding changesets adding manifests adding file changes added 37 changesets with 40 changes to 5 files 5 files updated, 0 files merged, 0 files removed, 0 files unresolved


目录
相关文章
|
2月前
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
202 4
|
2月前
|
人工智能 搜索推荐 物联网
Android系统版本演进与未来展望####
本文深入探讨了Android操作系统从诞生至今的发展历程,详细阐述了其关键版本迭代带来的创新特性、用户体验提升及对全球移动生态系统的影响。通过对Android历史版本的回顾与分析,本文旨在揭示其成功背后的驱动力,并展望未来Android可能的发展趋势与面临的挑战,为读者呈现一个既全面又具深度的技术视角。 ####
|
2月前
|
IDE Java 开发工具
移动应用与系统:探索Android开发之旅
在这篇文章中,我们将深入探讨Android开发的各个方面,从基础知识到高级技术。我们将通过代码示例和案例分析,帮助读者更好地理解和掌握Android开发。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和技巧。让我们一起开启Android开发的旅程吧!
|
28天前
|
机器学习/深度学习 人工智能 缓存
【AI系统】推理内存布局
本文介绍了CPU和GPU的基础内存知识,NCHWX内存排布格式,以及MNN推理引擎如何通过数据内存重新排布进行内核优化,特别是针对WinoGrad卷积计算的优化方法,通过NC4HW4数据格式重排,有效利用了SIMD指令集特性,减少了cache miss,提高了计算效率。
45 3
|
30天前
|
监控 Java Android开发
深入探索Android系统的内存管理机制
本文旨在全面解析Android系统的内存管理机制,包括其工作原理、常见问题及其解决方案。通过对Android内存模型的深入分析,本文将帮助开发者更好地理解内存分配、回收以及优化策略,从而提高应用性能和用户体验。
|
1月前
|
Java 开发工具 Android开发
安卓与iOS开发环境对比分析
在移动应用开发的广阔天地中,安卓和iOS两大平台各自占据半壁江山。本文深入探讨了这两个平台的开发环境,从编程语言、开发工具到用户界面设计等多个角度进行比较。通过实际案例分析和代码示例,我们旨在为开发者提供一个清晰的指南,帮助他们根据项目需求和个人偏好做出明智的选择。无论你是初涉移动开发领域的新手,还是寻求跨平台解决方案的资深开发者,这篇文章都将为你提供宝贵的信息和启示。
32 8
|
1月前
|
存储 安全 Android开发
探索Android系统的最新安全特性
在数字时代,智能手机已成为我们生活中不可或缺的一部分。随着技术的不断进步,手机操作系统的安全性也越来越受到重视。本文将深入探讨Android系统最新的安全特性,包括其设计理念、实施方式以及对用户的影响。通过分析这些安全措施如何保护用户免受恶意软件和网络攻击的威胁,我们希望为读者提供对Android安全性的全面了解。
|
1月前
|
机器学习/深度学习 人工智能 算法
【AI系统】内存分配算法
本文探讨了AI编译器前端优化中的内存分配问题,涵盖模型与硬件内存的发展、内存划分及其优化算法。文章首先分析了神经网络模型对NPU内存需求的增长趋势,随后详细介绍了静态与动态内存的概念及其实现方式,最后重点讨论了几种节省内存的算法,如空间换内存、计算换内存、模型压缩和内存复用等,旨在提高内存使用效率,减少碎片化,提升模型训练和推理的性能。
53 1
|
2月前
|
监控 Java Android开发
深入探讨Android系统的内存管理机制
本文将深入分析Android系统的内存管理机制,包括其内存分配、回收策略以及常见的内存泄漏问题。通过对这些方面的详细讨论,读者可以更好地理解Android系统如何高效地管理内存资源,从而提高应用程序的性能和稳定性。
83 16
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
65 1