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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值