草庐IT

android - 更深入的解释 procstats for Android

coder 2023-06-04 原文

我正在做一些内存测试,并且在我的研究中遇到了 procstats - 在我开始使用它之前,虽然我想在开始依赖它的数据之前完全理解一切。

这是我正在尝试使用的压缩文件:

CURRENT STATS:
* com.samsung.android.providers.context / u0a6:
       TOTAL: 100% (4.2MB-4.2MB-4.2MB/3.3MB-3.3MB-3.3MB over 1)
       Service: 100% (4.2MB-4.2MB-4.2MB/3.3MB-3.3MB-3.3MB over 1)
* com.sec.android.inputmethod / 1000:
       TOTAL: 100% (28MB-28MB-28MB/27MB-27MB-27MB over 2)
      Imp Fg: 100% (28MB-28MB-28MB/27MB-27MB-27MB over 2)
* com.google.android.googlequicksearchbox / u0a54:
       TOTAL: 0.05%
       Imp Bg: 0.05%
      (Cached): 100% (4.8MB-4.9MB-5.0MB/3.2MB-3.3MB-3.4MB over 2)
* com.google.android.talk / u0a98:
       TOTAL: 0.03%
       Imp Bg: 0.03%
       Receiver: 0.00%
       (Cached): 100% (8.8MB-8.8MB-8.8MB/7.4MB-7.4MB-7.4MB over 2)
      (Home): 100% (20MB-20MB-20MB/18MB-18MB-18MB over 1)
Run time Stats:

SOff/Norm: +24m36s393ms (running)
 TOTAL: +24m36s393ms
      Start time: 2014-12-08 14:22:50
      Total elapsed time: +24m36s508ms (partial) libdvm.so chromeview

以下是问题:

  1. “超过 1”/“超过 2”是什么意思?
  2. Service、Imp Bg、Receiver 和 Imp Fg 有什么区别?
  3. 为什么不是每个总数都列出 RAM 使用情况(例如 com.google.android.talk)
  4. 100% 是什么意思,0.03% 是什么意思?
  5. 为什么只有一些有(缓存)/(主页)?
  6. 100%(缓存)/(主页)是什么意思?
  7. “(部分)libdvm.so chromeview”是什么意思?
  8. 最后,我是否正确假设 (4.8MB-4.9MB-5.0MB/3.2MB-3.3MB-3.4MB) 是 (low pss - avg pss - high pss/low uss - avg uss - high uss) ?

如果有人能对此有所了解,将不胜感激。谢谢。

作为提醒,我已经阅读了这两个链接.... android-developers.blogspot.com/2014/01/和 android.googlesource.com/platform/frameworks/base/+/master/core/....和其他几页 - 这些仍然是我留下的问题。任何人都可以详细了解所有 8 个问题吗?

编辑

所以我一直在尝试比较 procstats 和 meminfo 之间的数字,它确实只会增加更多问题。

这是 procstats 的摘录

CURRENT STATS:
  * com.dropbox.android:crash_uploader / u0a87:
     TOTAL: 100% (4.8MB-4.8MB-4.9MB/3.9MB-3.9MB-3.9MB over 6)
     Service: 100% (4.8MB-4.8MB-4.9MB/3.9MB-3.9MB-3.9MB over 6)
  * com.mobileposse.client / u0a22:
     TOTAL: 0.16%
     Service: 0.13%
    Receiver: 0.03%
    (Cached): 98% (7.2MB-8.4MB-9.3MB/6.1MB-7.2MB-8.1MB over 7)
  * com.android.chrome / u0a79:
     TOTAL: 0.01%
    Receiver: 0.01%
    (Cached): 86% (5.2MB-5.2MB-5.4MB/4.4MB-4.4MB-4.4MB over 3)

这里是meminfo的摘录

Total PSS by process:
 5524 kB: com.android.chrome (pid 7334)
 4969 kB: com.dropbox.android:crash_uploader (pid 5617)

现在 Dropbox 变得有意义了,我想说 80% 的进程遵循 Dropbox 的领先优势,在 meminfo 和 pocstats 之间具有匹配的数字。我不明白 - 为什么 chrome 在 procstats 中没有任何总计但在 meminfo 中列出,为什么 mobileposse 在 procstats 中具有比 chrome 更高的统计数据但未在 meminfo 中列出?

最佳答案

看看sources由 Alex P 链接。您可以在此处找到一些问题的答案:

What does "over 1" / "over 2" mean?

这是采集的样本数。

What is the difference between Service, Imp Bg, Receiver, and Imp Fg?

它们是不同的states (Imp Bg 表示重要背景,Imp Fg 表示重要前景)

Why doesn't every total list the RAM usage (com.google.android.talk for example)

What does 100% mean and what does .03% mean?

这些应用程序运行时间的百分比。

Why do only some have (Cached)/(Home)?

What does 100% (Cached)/(Home) mean?

What does "(partial) libdvm.so chromeview" mean?

Lastly, am I correct in assuming that (4.8MB-4.9MB-5.0MB/3.2MB-3.3MB-3.4MB) is (low pss - avg pss - high pss / low uss - avg uss - high uss)?

是的,你是对的,documentation将它们描述为 minPss-avgPss-maxPss/minUss-avgUss-maxUss

关于android - 更深入的解释 procstats for Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27368911/

有关android - 更深入的解释 procstats for Android的更多相关文章

  1. ruby - 有人可以帮助解释类创建的 post_initialize 回调吗 (Sandi Metz) - 2

    我正在阅读SandiMetz的POODR,并且遇到了一个我不太了解的编码原则。这是代码:classBicycleattr_reader:size,:chain,:tire_sizedefinitialize(args={})@size=args[:size]||1@chain=args[:chain]||2@tire_size=args[:tire_size]||3post_initialize(args)endendclassMountainBike此代码将为其各自的属性输出1,2,3,4,5。我不明白的是查找方法。当一辆山地自行车被实例化时,因为它没有自己的initialize方法

  2. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  3. ruby - 解释为局部变量会覆盖方法名称吗? - 2

    如thisquestion,当在其自己的赋值中使用未定义的局部变量时,它的计算结果为nil。x=x#=>nil但是当局部变量的名称与现有的方法名称冲突时,就比较棘手了。为什么下面的最后一个示例返回nil?{}.instance_eval{a=keys}#=>[]{}.instance_eval{keys=self.keys}#=>[]{}.instance_eval{keys=keys}#=>nil 最佳答案 在Ruby中,因为可以在没有显式接收器和括号的情况下调用方法,所以在局部变量引用和无接收器无参数方法调用之间存在语法歧义:f

  4. 语法类似于 GitHub Flavored Markdown 的 Ruby markdown 解释器? - 2

    我使用Jekyll运行博客,并认为我会解决RedcarpetMarkdown解释器,因为它是developedandusedbyGitHub.好吧,我只是碰巧遇到了一个错误,去检查问题,然后foundthis.Maintainersays,"Asyouprobablyhavenoticed(harharharhar)Idon'thavetimetomaintainRedcarpetanymore.It'snotapriorityforme(IfindMarkdownthoroughlyboring)andit'snotapriorityforGitHub,becausewenolong

  5. ruby - 有人可以解释一下在 Ruby 中注入(inject)的真实、通俗易懂的用法吗? - 2

    我正在学习Ruby,遇到了inject。我正处于理解它的风口浪尖,但当我是那种需要真实世界的例子来学习一些东西的人时。我遇到的最常见的例子是人们使用inject来添加一个(1..10)范围的总和,我不太关心这个。这是一个任意的例子。在实际程序中我会用它做什么?我正在学习,所以我可以继续使用Rails,但我不必有一个以Web为中心的示例。我只需要一些我可以全神贯注的目标。谢谢大家。 最佳答案 inject有时可以通过它的“其他”名称reduce更好地理解。它是一个对Enumerable进行操作(迭代一次)并返回单个值的函数。它有许多有

  6. ruby - 一种语言如何被自身解释(如 Rubinius)? - 2

    我使用Ruby编程已经有一段时间了,现在只使用Ruby的标准MRI实现,但我一直对我经常听到的其他实现感到好奇。前几天我在读有关Rubinius的文章,这是一个用Ruby编写的Ruby解释器。我试着在不同的地方查找它,但我很难弄清楚这样的东西到底是如何工作的。我在编译器或语言编写方面从来没有太多经验,但我真的很想弄明白。一门语言究竟如何才能被自己解释?编译中是否有一个我不明白这有意义的基本步骤?有人可以像我是个白痴一样向我解释这个吗(因为无论如何这都不会太离谱) 最佳答案 它比你想象的要简单。Rubinius并非100%用Ruby编

  7. Ruby 代码解释 - 2

    谁能解释一下这段Ruby代码:defadd_spec_path_to(args)#:nodoc:args我看到了运算符用于连接字符串或在其他语言中用作按位运算符,但有人可以在这种情况下对其进行解释。它是以某种方式将一个空白的lamda附加到args上还是我完全错了?我还可以看到它是这样使用的:before_parts(*args)是Hash关键字?我也不确定||=是什么接线员在说。我同样对什么一无所知caller(0)[2]是。 最佳答案 我假设args是一个Array。Hash是类的名称-第一行将空哈希{}推送到argsunles

  8. python - 解释性语言中的链接和加载 - 2

    在编译型语言中,源代码由编译器转化为目标代码,不同的目标文件(如果有多个文件)由链接器链接并由加载器加载到内存中执行。如果我有一个使用解释性语言(例如ruby​​或python)编写的应用程序,并且如果源代码跨多个文件拆分,那么这些文件究竟何时组合在一起。换句话说,链接何时完成?解释型语言一开始就有链接器和加载器,还是解释器包揽一切?我真的很困惑,无法理解它!!谁能对此有所启发?! 最佳答案 解释型语言或多或少是可执行文件的大型配置,称为解释器。该可执行文件(例如/usr/bin/python)是实际运行的程序。然后它读取它要执行的

  9. ruby - 解释型语言(如 Ruby)如何运行? - 2

    我打算学习Ruby。我知道这是一种解释语言。我知道编译语言最终会被翻译成机器码,但是ruby​​解释器是做什么的呢?我读到解释器是用C编写的,但是每一行ruby​​都转换为c,然后再次编译为机器代码吗?我也听说过JIT,但是如果这会增加答案的复杂性,那么您就不需要回答它了。我正在寻找的是我的Ruby代码发生了什么。 最佳答案 它将Ruby代码转换为某种更简单的“中间”表示形式(在最近的版本中,它编译为字节码)。它还会在您计算机的内存中构建一个虚拟机,模拟执行该表示的物理机。这台机器是一台物理机器的镜像,至少在合理和有用的范围内。它通

  10. ruby - 有人可以用 Ruby 向我解释 NaN 吗? - 2

    我刚刚在我的程序中的一些数字操作中发现了一个错误,我得到了一个FloatDomainError(NaN)所以我开始记录传入的数字:if(metric.is_a?(Numeric))self.metric=metricelseLOGGER.warn("metric#{metric}isnotanumber")self.metric=0end但传入的数字是NaN显然is_a?(Numeric)因为我没有收到日志警告,它会将指标传递给我的指标=方法,这是我获取FloatDomainError的地方现在,如果我错了,请纠正我,但是NaN(不是数字)的类型似乎在语义上是错误的吗??谁能给我解释一

随机推荐