- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
正如我在问题中提到的,Lost RAM 出现在 Dumpsys meminfo
中。
显示“丢失 RAM”的示例 dumpsys。
Total RAM: 998096 kB
Free RAM: 574945 kB (145869 cached pss + 393200 cached + 35876 free)
Used RAM: 392334 kB (240642 used pss + 107196 buffers + 3856 shmem + 40640 slab)
Lost RAM: 30817 kB
Tuning: 64 (large 384), oom 122880 kB, restore limit 40960 kB (high-end-gfx)
最佳答案
在我的系统上,它们主要是由 ION(替代 pmem)引起的。如果您的内核启用了 ionic 调试,您可以使用此脚本计算您的 ION 使用情况:
adb shell cat /d/ion/heaps/system|perl -ne 'chomp; if (m/pages in.*pool = (\d+) total/) {$x += $1;} if (m/^\s+total\s+(\d+)$/) {$y += $1} END {printf "use: %d kb, cache: %d kb; total: %d kb", $y/1024, $x/1024, ($x + $y)/1024}'
事实上,任何由驱动程序完成和跟踪的内核页面分配都不会被内核跟踪,因此算作丢失的 ram。
在我停止系统服务器后,我使用另一个 .awk 脚本来计算丢失的 ram(dumpsys meminfo 将需要 meminfo 服务,因此将不再工作),并且丢失的 ram 非常接近 ION 调试输出:
#!/usr/bin/awk
BEGIN {
types["MemTotal"] = 1;
types["Pss"] = 1;
types["MemFree"] = 1;
types["Cached"] = 1;
types["Buffers"] = 1;
types["Shmem"] = 1;
types["Slab"] = 1;
}
## start code-generator "^\\s *#"
#echo
# for x in Pss MemTotal MemFree Cached Buffers Shmem Slab; do
# cat << EOF
#/$x: / {
# hash["$x"] += \$2;
# next
#}
#
#EOF
# done
## end code-generator
## start generated code
/Pss: / {
hash["Pss"] += $2;
next
}
/MemTotal: / {
hash["MemTotal"] += $2;
next
}
/MemFree: / {
hash["MemFree"] += $2;
next
}
/Cached: / {
hash["Cached"] += $2;
next
}
/Buffers: / {
hash["Buffers"] += $2;
next
}
/Shmem: / {
hash["Shmem"] += $2;
next
}
/Slab: / {
hash["Slab"] += $2;
next
}
## end generated code
END {
lost = 0;
for (type in types) {
if (type == "MemTotal") {
lost += hash[type];
} else {
lost -= hash[type];
}
}
print "lost: " lost " kB\n";
}
在使用 adb shell sh -c 'echo 3 > /proc/sys/vm/drop_caches'
强制内核内存收缩后,我也再次检查了一遍, 结果还是很接近的。
关于android - Dumpsys meminfo中出现的 “Lost RAM”背后的概念是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21881122/
我想获取每个 NUMA 节点的“可用内存”量。当处理一整台机器时,通常会像free一样解析/proc/meminfo(所需的数字是MemFree + Buffers + Cached)。还存在/sys
如何编写自己的代码来使用“meminfo”系统服务?或者如何添加自己的系统服务?我的目标是在应用程序运行时自动采样内存使用数据,并分析数据事后分析。 最佳答案 How can I write my o
我一直在使用 scanf 从/proc/meminfo 中提取 3 个值,如下所示: fscanf (info, "MemTotal: %*d kB MemFree: %d kB Buffers:
如果系统中存在内存泄漏,定期 cat/proc/meminfo 获取提示是否是个好主意。 如果是这样,鉴于可疑的内存泄漏发生在内核模块中,我应该关注哪个指标: > cat /proc/meminfo
当我在 android 4.2 上运行“adb shell dumpsys meminfo”时,我得到的结果如下 Shared Pr
我试图了解 meminfo 如何跟踪内存。这是我在看的: MemTotal: 341596 kB MemFree: 147288 kB Buffers:
我可以理解 /proc/meminfo 中包含的大部分信息,例如总内存、缓冲区、缓存等。你能告诉我下面列出的那些不太明显的信息是什么意思吗? 匿名页面 映射 楼板 NFS_不稳定 弹跳 Vmalloc
我要感谢您帮助我解决相关问题。我知道如果我做一个 cat/proc/meminfo 它只会以 kb 显示,我怎么能以 mb 显示?我真的很想为此使用 cat 或 awk。 最佳答案 这将转换任何 kB
DirectMap4K/DirectMap2M 在/proc/meminfo 的输出中表示什么? 最佳答案 它们给出了由 x86 TLB 映射到该页面大小的内存量. 关于linux - meminfo
在 Linux 中,我希望我的用户空间程序提供有关其内部计数器的信息,使用类似于/proc/meminfo 的方法:用户只需读取文件即可获取信息。 我正在考虑使用常规文件/tmp/my_counter
我试图找出可用的缓存和缓冲区的数量,并将其计为可用内存(列在 free 和/proc/meminfo 中)。如果我 drop_caches 我会得到一些免费的,但它是怎么做到的?我在哪里可以找到它的源
我想记录当前正在运行的实例的内存总量(或者:当前进程使用的内存和当前进程可用的内存),并使用/proc/meminfo: info = { i.split()[0].rstrip(":"):
关于“adb shell dumpsys meminfo”的输出有很多问题,比如这个: adb shell dumpsys meminfo - What is the meaning of each
我正在进入 kb 但我想要 ram 以 mb 我如何获得它因为我正在获得“MemTotal:855000kb”但我想要 855mb 如何获得 ram 以 Mb 以及如何只获得数字不想要 Memtota
在使用Android adb shell时,我对procrank和dumpsys meminfo之间的区别感到困惑。我的应用程序的Pss,由command-procrank报告,总是高于dumpsys
我在 bash 中有以下脚本: ssh user@1.1.1.1 "echo 'start' mkdir -p /home/user/out cp /tmp/big_file /home/
那么 meminfo 是表示有 X 空闲内存的最佳方式吗?我问这个问题是因为我的公司声明这不是表示可用内存的准确方法。事实上,它是 memfree、cached、buffers、slab 的总和,如果
Slab — 内核用来缓存数据结构供其自身使用的内存总量(以千字节为单位)。 我的问题是,如果任何进程创建自己的 slab,那么这个 slab 内存会转到 slab 或进程的 PSS 部分吗? kma
例如,我有: % grep '^Mapped:' /proc/meminfo Mapped: 121868 kB 我想生成这样的东西: PID Mapped
我正在查看下面给出的命令输出 adb shell dumpsys meminfo com.imangi.templerun 但是,我无法正确理解这一点。 谁能帮我理解一下? 最佳答案 由于不同版本的“
我是一名优秀的程序员,十分优秀!