Android4.2系统应用缓存12KB残留(二)


Android4.2系统应用缓存12KB残留(一)
Android4.2系统应用缓存12KB残留(二)

基础概念:

目前主流的Linux,一个目录占用的空间为4096字节。
(注:认为Linux目录不占空间的同学,请自行百度)


分享要点:
  • 经过查看Android不同版本源码并测试, 12KB的缓存残留应该是Android4.2的一个 Bug
  • Android4.2的 应用信息大小(包含 Cache大小)的计算都是存在错误的。

原因分析:

缓存大小计算涉及以下两个文件:
\frameworks\base\cmds\installd\commands.c
\frameworks\base\libs\diskusage\dirsize.c
通过在文件搜索关键字“ calculate_dir_size ”,可以找到关键代码。

Android4.2以前代码逻辑都是正常的
应用cache目录占用的空间不会被计算进应用Cache大小。

而Android4.2后则存在以下问题:
假设一开始缓存大小为cacheSize = 0,
command.c中在计算缓存大小时, 将cache目录大小计算进cacheSize: cacheSize += 4096
dirsize.c在计算缓存大小时,将“.”“..”两个目录加入计算:cacheSize += 4096 *2


分析结论:

Android的应用信息中部分目录大小重复统计
而最终 cacheSize=4096B*3=12KB

你可能感兴趣的:(Android4.2系统应用缓存12KB残留(二))