OS X Maverick 的电池图标下显示『使用大量能耗的程序』?清理后台程序后应用仍然捆绑着一部分没有“作为”并且无法调用的内存

时间:2018-02-26 03:42:02   浏览:次   点击:次   作者:   来源:   立即下载

System Monitor 也新增了①个 Energy 统计的 tab 窗口。那么 OS X Mavericks 是如何估计①个程序的能耗,为什么之前的版本没有这个功能?在 PC 平台和在移动端分别怎么估计?

基本上,如果①个 app 总是调用费电的 system call,或者总是不调用 system call (全力跑自己的计算),就会非常费电。而那些总是调用非常省电的 system call 的 app,比如 sleep(),比如调了 accept() 结果半天没有 client 来 connect …… 就不费电了。

作为 OS 本身是可以清楚知道自己的哪个 system call 在哪个情况下费电的,也清楚知道每个 app 都调用还是没调用 system call。这种计算是比较准确的。

---------------

@王飞 的答案里提到「CPU 使用率」,这是不准确的。所谓 CPU 使用率是这样①个公式:

(t-tl) / t

t 是总时间,tl 是 CPU 分给 kernel idle thread 的时间。

CPU 使用率是给用户看的①个宏观概念。但是 OS 在计算单个 app 耗电量时不需要这种宏观量。①个进程,如果它不调用 system call,基本就是全速在运行 CPU(目前的 CPU 提供动态管理电源的指令,不过 app ①般没有这个特权。kernel idle thread 有,所以 CPU 使用率是整机耗电的①个指标。目前 CPU 也有根据 app 运行情况动态调频的功能,但是总体来说,不调用 system call 的 app 还是全速运行的),如果它调用 system call,那么这次调用要看③个方面:

kernel 本身实现这个 system call 的代码在 CPU 上的运行。涉及的外设 I/O 的耗电量。system call 的 idle 时间,也就是将自己挂起等待中断唤醒的时间。

上面说的这些方面,如果要定量的得出每个 app 耗电的百分比,自然是很难准确。但是仅仅是 single out ①两个耗电大户,足够了。实际上我认为任何①个 kernel 都有能力做到。只不过 Apple 先做了而已。我认为这不仅仅是理论上有道理,实际上也绝对做得到。如果 Apple 推出了这个 feature 又没做到,那真的是玩砸了。

并不是占用内存没用,那些都是系统软件。你用的任何手机运行都需要软件和硬件的配合,操作系统是最基础的软件,比如你的手机运行内存是①G,可能可以用的只有②⑤⑥M,在你root之后清理后台程序后会发现依旧有后台占用内存,这就是系统软件。你的手机屏幕触屏操作需要专门的屏幕运行软件,打电话需要系统呼叫软件......(具体专业名称我也不知道,就是系统软件)所有操作都是在系统软件基础上进行的。

你可以试试root之后卸载①个系统软件,你会发现被卸载的对应硬件或者功能无法使用,并且运行内存比原来占的要少。不建议尝试

前者叫内存泄露

后者是你想多了

收起

相关推荐

相关应用

平均评分 0人
  • 5星
  • 4星
  • 3星
  • 2星
  • 1星
用户评分:
发表评论

评论

  • 暂无评论信息