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


目录
相关文章
|
7天前
|
程序员 编译器 C++
【C++核心】C++内存分区模型分析
这篇文章详细解释了C++程序执行时内存的四个区域:代码区、全局区、栈区和堆区,以及如何在这些区域中分配和释放内存。
22 2
|
24天前
|
开发工具 Android开发 Swift
安卓与iOS开发环境对比分析
在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统无疑是主角。它们各自拥有独特的特点和优势,为开发者提供了不同的开发环境和工具。本文将深入浅出地探讨安卓和iOS开发环境的主要差异,包括开发工具、编程语言、用户界面设计、性能优化以及市场覆盖等方面,旨在帮助初学者更好地理解两大平台的开发特点,并为他们选择合适的开发路径提供参考。通过比较分析,我们将揭示不同环境下的开发实践,以及如何根据项目需求和目标受众来选择最合适的开发平台。
34 2
|
20天前
|
Java 测试技术 Android开发
Android性能测试——发现和定位内存泄露和卡顿
本文详细介绍了Android应用性能测试中的内存泄漏与卡顿问题及其解决方案。首先,文章描述了使用MAT工具定位内存泄漏的具体步骤,并通过实例展示了如何分析Histogram图表和Dominator Tree。接着,针对卡顿问题,文章探讨了其产生原因,并提供了多种测试方法,包括GPU呈现模式分析、FPS Meter软件测试、绘制圆点计数法及Android Studio自带的GPU监控功能。最后,文章给出了排查卡顿问题的四个方向,帮助开发者优化应用性能。
67 4
Android性能测试——发现和定位内存泄露和卡顿
|
5天前
|
安全 Android开发 数据安全/隐私保护
探索安卓与iOS的安全性差异:技术深度分析与实践建议
本文旨在深入探讨并比较Android和iOS两大移动操作系统在安全性方面的不同之处。通过详细的技术分析,揭示两者在架构设计、权限管理、应用生态及更新机制等方面的安全特性。同时,针对这些差异提出针对性的实践建议,旨在为开发者和用户提供增强移动设备安全性的参考。
|
8天前
|
监控 Android开发 iOS开发
深入探索安卓与iOS的系统架构差异:理解两大移动平台的技术根基在移动技术日新月异的今天,安卓和iOS作为市场上最为流行的两个操作系统,各自拥有独特的技术特性和庞大的用户基础。本文将深入探讨这两个平台的系统架构差异,揭示它们如何支撑起各自的生态系统,并影响着全球数亿用户的使用体验。
本文通过对比分析安卓和iOS的系统架构,揭示了这两个平台在设计理念、安全性、用户体验和技术生态上的根本区别。不同于常规的技术综述,本文以深入浅出的方式,带领读者理解这些差异是如何影响应用开发、用户选择和市场趋势的。通过梳理历史脉络和未来展望,本文旨在为开发者、用户以及行业分析师提供有价值的见解,帮助大家更好地把握移动技术发展的脉络。
|
5天前
|
Dart 开发工具 Android开发
在 Android 系统上搭建 Flutter 环境的具体步骤是什么?
在 Android 系统上搭建 Flutter 环境的具体步骤是什么?
|
7天前
|
算法 程序员 Python
程序员必看!Python复杂度分析全攻略,让你的算法设计既快又省内存!
在编程领域,Python以简洁的语法和强大的库支持成为众多程序员的首选语言。然而,性能优化仍是挑战。本文将带你深入了解Python算法的复杂度分析,从时间与空间复杂度入手,分享四大最佳实践:选择合适算法、优化实现、利用Python特性减少空间消耗及定期评估调整,助你写出高效且节省内存的代码,轻松应对各种编程挑战。
18 1
|
9天前
|
存储 Prometheus NoSQL
Redis 内存突增时,如何定量分析其内存使用情况
【9月更文挑战第21天】当Redis内存突增时,可采用多种方法分析内存使用情况:1)使用`INFO memory`命令查看详细内存信息;2)借助`redis-cli --bigkeys`和RMA工具定位大键;3)利用Prometheus和Grafana监控内存变化;4)优化数据类型和存储结构;5)检查并调整内存碎片率。通过这些方法,可有效定位并解决内存问题,保障Redis稳定运行。
|
12天前
|
安全 Linux Android开发
探索安卓与iOS的安全性差异:技术深度分析
本文深入探讨了安卓(Android)和iOS两个主流操作系统平台在安全性方面的不同之处。通过比较它们在架构设计、系统更新机制、应用程序生态和隐私保护策略等方面的差异,揭示了每个平台独特的安全优势及潜在风险。此外,文章还讨论了用户在使用这些设备时可以采取的一些最佳实践,以增强个人数据的安全。
|
16天前
|
监控 Ubuntu API
Python脚本监控Ubuntu系统进程内存的实现方式
通过这种方法,我们可以很容易地监控Ubuntu系统中进程的内存使用情况,对于性能分析和资源管理具有很大的帮助。这只是 `psutil`库功能的冰山一角,`psutil`还能够提供更多关于系统和进程的详细信息,强烈推荐进一步探索这个强大的库。
29 1

热门文章

最新文章