`
jonson
  • 浏览: 168505 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android 内存占用 分析工具

阅读更多

top  | grep app名称

ps  |  grep app名称

procrank | grep app名称

dumpsys meminfo app名称

前两个命令只能查到VSS RSS内存占用信息

而后面两个命令可以查出  PSS USS内存占用.

dumpsys meminfo 可以查出native和dalvik分别占用多少内存

 

dumpsys 用来给出手机中所有应用程序的信息,并且也会给出现在手机的状态。

dumpsys [Option]

               meminfo 显示内存信息

               cpuinfo 显示CPU信息

               account 显示accounts信息

               activity 显示所有的activities的信息

               window 显示键盘,窗口和它们的关系

               wifi 显示wifi信息

 

 

 

Terms

 

  • VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
  • RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)
  • PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
  • USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)

一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS

Overview

The aim of this post is to provide information that will assist in interpreting memory reports from various tools so the true memory usage for Linux processes and the system can be determined.

Android has a tool called procrank (/system/xbin/procrank), which lists out the memory usage of Linux processes in order from highest to lowest usage. The sizes reported per process are VSS, RSS, PSS, and USS.

For the sake of simplicity in this description, memory will be expressed in terms of pages, rather than bytes. Linux systems like ours manage memory in 4096 byte pages at the lowest level.

VSS (reported as VSZ from ps) is . This size also includes memory that may not be resident in RAM like mallocs that have been allocated but not written to. VSS is of very little use for determing real memory usage of a process.

RSS is the. RSS can be misleading, because it reports the total all of the shared libraries that the process uses, even though a shared library is only loaded into memory once regardless of how many processes use it. RSS is not an accurate representation of the memory usage for a single process.

PSS , i.e. if three processes all use a shared library that has 30 pages, that library will only contribute 10 pages to the PSS that is reported for each of the three processes. PSS is a very useful number because when the PSS for all processes in the system are summed together, that is a good representation for the total memory usage in the system. When a process is killed, the shared libraries that contributed to its PSS will be proportionally distributed to the PSS totals for the remaining processes still using that library. In this way PSS can be slightly misleading, because when a process is killed, PSS does not accurately represent the memory returned to the overall system.

USS is . USS is an extremely useful number because it indicates the true incremental cost of running a particular process. When a process is killed, the USS is the total memory that is actually returned to the system. USS is the best number to watch when initially suspicious of memory leaks in a process.

For systems that have Python available, there is also a nice tool called smem that will report memory statistics including all of these categories.

# procrank
procrank
PID      Vss      Rss      Pss      Uss cmdline
481   31536K   30936K   14337K    9956K system_server
475   26128K   26128K   10046K    5992K zygote
526   25108K   25108K    9225K    5384K android.process.acore
523   22388K   22388K    7166K    3432K com.android.phone
574   21632K   21632K    6109K    2468K com.android.settings
521   20816K   20816K    6050K    2776K jp.co.omronsoft.openwnn
474    3304K    3304K    1097K     624K /system/bin/mediaserver
37     304K     304K     289K     288K /sbin/adbd
29     720K     720K     261K     212K /system/bin/rild
601     412K     412K     225K     216K procrank
   1     204K     204K     185K     184K /init
35     388K     388K     182K     172K /system/bin/qemud
284     384K     384K     160K     148K top
27     376K     376K     148K     136K /system/bin/vold
261     332K     332K     123K     112K logcat
33     396K     396K     105K      80K /system/bin/keystore
32     316K     316K     100K      88K /system/bin/installd
269     328K     328K      95K      72K /system/bin/sh
26     280K     280K      93K      84K /system/bin/servicemanager
45     304K     304K      91K      80K /system/bin/qemu-props
34     324K     324K      91K      68K /system/bin/sh
260     324K     324K      91K      68K /system/bin/sh
600     324K     324K      91K      68K /system/bin/sh
25     308K     308K      88K      68K /system/bin/sh
28     232K     232K      67K      60K /system/bin/debuggerd

1
3
分享到:
评论

相关推荐

    Android MAT 内存分析 工具

    **五、MAT与Android内存优化** MAT在Android开发中的应用主要是查找和修复内存泄漏,优化对象生命周期管理,减少内存占用,提升应用性能。开发者应定期进行内存分析,特别是在处理大量数据或长时间运行的应用中。 ...

    android应用内存监控工具

    理解Android内存机制,掌握内存监控工具的使用,结合实际项目不断优化代码,是每个Android开发者必备的技能。定期进行内存分析,对应用进行压力测试,及时发现和修复问题,可以有效提升应用的质量和用户体验。

    获取android 内存占用工具

    "获取Android内存占用工具" 提供了一种简便的方法来监控Android设备的内存状态。下面我们将详细探讨如何使用这个工具,以及它背后的原理。 首先,你需要将Android设备通过USB连接到电脑,并确保已经开启了USB调试...

    mac_mat android内存泄漏分析工具

    "mac_mat android内存泄漏分析工具"就是这样一个针对Android平台的工具,特别适合在Mac环境下对应用进行内存泄漏检测。 MAT(Memory Analyzer Tool)是由Eclipse基金会开发的一个强大的Java内存分析工具。尽管主要...

    android 内存分析工具

    以下是对Android内存分析工具的详细阐述: 1. **内存分析的重要性** - **性能优化**:通过内存分析,可以发现不必要的内存占用,减少内存浪费,提升应用运行速度。 - **防止内存泄漏**:内存泄漏可能导致应用耗尽...

    android内存分析工具

    "Android内存分析工具",尤其是Eclipse的MAT(Memory Analyzer Tool)插件,正是解决这类问题的重要利器。 MAT是IBM提供的一款强大的Java内存分析工具,它不仅适用于Android开发,也适用于任何基于Java的平台。MAT...

    M8 android dump内存工具

    开发者可以使用这些数据来分析应用的内存占用、查找内存泄漏、或者比较不同运行时刻的内存状态。例如,如果发现某个应用的内存占用持续增长,可能表明存在内存泄漏问题,需要进一步检查应用的代码和资源管理。 在...

    内存分析工具MAT

    MAT(Memory Analyzer Tool)是一款由Eclipse基金会开发的专业Java堆内存分析工具,它同样适用于Android应用的内存管理。MAT可以帮助开发者识别内存泄漏、查找对象生命周期问题以及优化内存使用效率。 标题中的...

    android应用内存占用测试(每隔一秒打印procrank的信息)

    ### Android应用内存占用测试 #### 一、内存占用的重要性 对于Android应用而言,优化内存占用是非常重要的。因为智能手机的RAM(随机访问存储器)资源是有限的,这意味着单个应用程序的内存占用越小,手机就能运行...

    android系统分析内存泄露测试

    如果一个线程创建了大量的对象但没有释放,可能会导致该线程所在的应用进程内存占用过高。因此,合理管理线程和对象生命周期对于防止内存泄漏至关重要。 在深入分析内存泄漏时,阅读《Android系统原理与开发要点...

    Android-Android开发辅助工具fpstopActivityactivity启动耗时电量cpu内存分析

    "Android-Android开发辅助工具fpstopActivityactivity启动耗时电量cpu内存分析"是一个专为开发者设计的工具,它可以帮助开发者监测和分析应用程序的运行状态,以便找出可能存在的性能瓶颈,提高用户体验。这个工具...

    android 内存分析

    ### Android内存分析:深入理解与优化策略 #### 引用未释放导致的内存泄漏 **1.1 注册未取消导致的内存泄漏** 在Android开发过程中,注册未取消是一种非常典型的内存泄漏场景,尤其当涉及到跨应用或服务的交互时...

    Android分析Bugreport开源工具

    导出的html文件包含了根据bugreport数据得出的图表和分析结论,主要包括进程内存占用信息、程序ANR或crash的堆栈信息、电池信息、CPU频率信息等等。更多详细内容可以参考文章...

    android减少内存占用专题

    4. **使用内存分析工具**:如Android Studio的内存分析器,可以帮助检测内存泄漏和不必要的内存占用。 5. **合理使用软引用和弱引用**:它们可以在内存紧张时被GC回收,但需要注意防止循环引用导致的内存泄漏。 综...

    Android应用程序内存泄漏的分析.pdf

    以上知识点涉及了Android内存泄漏分析的多个方面,包括理论知识、工具使用、操作实践和问题诊断技巧。理解和掌握这些知识点对Android开发人员来说是非常重要的,它可以帮助他们在日常开发中有效地避免和解决内存泄漏...

    Android 内存溢出问题

    - **适当使用Bitmap和内存缓存**:在处理图片时,合理缩放Bitmap以减小内存占用,并使用LRU缓存策略。 - **避免全局或静态变量持有大量对象**:这可能导致对象生命周期过长,占用内存。 - **及时释放资源**:如关闭...

    Unity调用Android查看内存信息2

    在Unity中,我们可以通过Profiler的Memory部分查看应用的内存占用,但要获取更详细的内存使用情况,就需要借助之前提到的Android原生API。通过传递回来的内存信息,我们可以在Unity的UI上显示这些数据,帮助开发者...

    Android内存泄漏案例分析

    这个工具能够帮助开发者快速定位到内存占用比较大的对象。进一步地,分析这些大对象(如Bitmap对象)到GCRoots的引用路径,可以找到那些被错误持有的对象。 案例中还提到了一个常见原因:长生命周期的对象(如...

    AndroidAuto认证分析工具GalMonitor

    它能够实时监测应用的CPU、内存占用情况,以及网络流量等关键指标,这对于优化应用性能、避免资源浪费至关重要。同时,它还能记录和分析应用的启动时间、响应速度,以及在不同网络条件下的表现,帮助开发者找出可能...

    使用Android Studio检测内存泄露(LeakCanary)

    Allocation Tracker功能则用于追踪内存分配的过程,通过开始和停止追踪,你可以看到在特定时间段内哪些对象被创建,帮助定位内存占用的源头。 LeakCanary是一款由Square公司开发的自动化内存泄露检测工具,特别适合...

Global site tag (gtag.js) - Google Analytics