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


目录
相关文章
|
19天前
|
Web App开发 监控 JavaScript
监控和分析 JavaScript 内存使用情况
【10月更文挑战第30天】通过使用上述的浏览器开发者工具、性能分析工具和内存泄漏检测工具,可以有效地监控和分析JavaScript内存使用情况,及时发现和解决内存泄漏、过度内存消耗等问题,从而提高JavaScript应用程序的性能和稳定性。在实际开发中,可以根据具体的需求和场景选择合适的工具和方法来进行内存监控和分析。
|
19天前
|
安全 Android开发 数据安全/隐私保护
深入探讨iOS与Android系统安全性对比分析
在移动操作系统领域,iOS和Android无疑是两大巨头。本文从技术角度出发,对这两个系统的架构、安全机制以及用户隐私保护等方面进行了详细的比较分析。通过深入探讨,我们旨在揭示两个系统在安全性方面的差异,并为用户提供一些实用的安全建议。
|
7天前
|
监控 Java Android开发
深入探讨Android系统的内存管理机制
本文将深入分析Android系统的内存管理机制,包括其内存分配、回收策略以及常见的内存泄漏问题。通过对这些方面的详细讨论,读者可以更好地理解Android系统如何高效地管理内存资源,从而提高应用程序的性能和稳定性。
36 16
|
27天前
|
缓存 Java Shell
Android 系统缓存扫描与清理方法分析
Android 系统缓存从原理探索到实现。
52 15
Android 系统缓存扫描与清理方法分析
|
13天前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
15天前
|
Android开发 开发者
Android性能优化——内存管理的艺术
Android性能优化——内存管理的艺术
|
23天前
|
Web App开发 JavaScript 前端开发
使用 Chrome 浏览器的内存分析工具来检测 JavaScript 中的内存泄漏
【10月更文挑战第25天】利用 Chrome 浏览器的内存分析工具,可以较为准确地检测 JavaScript 中的内存泄漏问题,并帮助我们找出潜在的泄漏点,以便采取相应的解决措施。
143 9
|
19天前
|
算法 JavaScript Android开发
|
21天前
|
安全 搜索推荐 Android开发
揭秘安卓与iOS系统的差异:技术深度对比
【10月更文挑战第27天】 本文深入探讨了安卓(Android)与iOS两大移动操作系统的技术特点和用户体验差异。通过对比两者的系统架构、应用生态、用户界面、安全性等方面,揭示了为何这两种系统能够在市场中各占一席之地,并为用户提供不同的选择。文章旨在为读者提供一个全面的视角,理解两种系统的优势与局限,从而更好地根据自己的需求做出选择。
56 2
|
28天前
|
并行计算 算法 IDE
【灵码助力Cuda算法分析】分析共享内存的矩阵乘法优化
本文介绍了如何利用通义灵码在Visual Studio 2022中对基于CUDA的共享内存矩阵乘法优化代码进行深入分析。文章从整体程序结构入手,逐步深入到线程调度、矩阵分块、循环展开等关键细节,最后通过带入具体值的方式进一步解析复杂循环逻辑,展示了通义灵码在辅助理解和优化CUDA编程中的强大功能。