Android存储管理

前段时间有遇到一个问题,客户在我们的Android设备上开启了Log,然后就这么放着抓了好几天,几天下来发现Log文件已经达到19GB大小了,完全超出设备存储空间大小,关键是我们的设备是2(RAM)+16(ROM),很难理解为啥能存储19GB的内容,而且Log文件的字节数仍持续增加。

  • 从文件管理器中查看显示19GB(字节数也是19GB的字节数)
  • 控制台进入Log目录,ls -al查看Log文件字节数同样也是19GB字节数,du -h查看只有11GB
  • 把Log文件从设备中pull到电脑,电脑上同样也是19GB(字节数同样对应19GB)的大小

场景复现:
1.准备一个大文件(超出存储空间大小),开始拷贝到存储空间(Copy Anyway):
在这里插入图片描述2.控制台进入设备存储目录,ls -al;df -h;du -h一直观察相关信息变化,即使df -h显示存储空间已经100%使用,文件拷贝进度仍然未停止,ls -al显示仍在增加,最终到拷贝完成:
在这里插入图片描述
在这里插入图片描述
3.文件pull到本地:
在这里插入图片描述

从上面3个步操作的截图中可以复现出问题的场景,并且得出问题:
(1)为啥能存储大于ROM容量的文件?
(2)为啥du -h文件大小(11GB)和实际的大小(18GB)差异如此之大?

wc -l比较两个文件发现差异很大,此时,怀疑即使pull出的文件显示18GB,但是实际存储数据应该没有18GB,之所以显示18GB仅和文件结构中存储的信息有关,使用stat命令查看文件inode信息,显示Size即18GB字节数,所有的获取文件大小都是基于Size值的,而与其真正数据量无关。照此思路,计划比对两个文件16进制内容,使用hexdump对比前500行及后500行的内容,发现前面的内容是完全相同的,不一样的地方是最后出问题的文件中发生了内存地址偏移,这个就是因空间不足导致文件部分被丢弃导致的,从而也可以证明该文件实际数据其实并没有18GB。
在这里插入图片描述备注:d1_69323393_end.txt是原文件后500行;d2_41932022_end.txt是超出空间后pull到本地文件后500行;d3_41932022_end.txt是超出空间设备重启,ls -al恢复正常了,pull到本地文件后500行。

文件拷贝完后,ls -al显示的是18GB的字节数,但是重启设备后字节数恢复到11GB。应该是系统因文件具有内存偏移而重新计算了文件大小。此处的11GB正是磁盘所能分配的最大空间,df -h可以显示出来磁盘信息。
在这里插入图片描述

总结:
(1)为啥能存储大于ROM容量的文件?
==》当文件大小超出存储空间时,系统弹出空间警告提示,所存储的实际文件并未超出存储空间。ls的数据应该是从文件属性中读取出的。

(2)为啥du -h文件大小(11GB)和实际的大小(18GB)差异如此之大?
==》du为磁盘分配给文件的大小,如存储空间剩余11GB,当文件大于剩余存储空间时,使用du -h则显示文件所占有的存储空间大小,即11GB

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 项目是使用 Android 操作系统和相关开发工具开发的一款移动应用程序。Android 平台提供了丰富的功能和接口,开发人员可以使用 Java 或 Kotlin 等编程语言编写 Android 应用程序。Android 项目也可以是针对特定设备或特定需求进行自定义开发的软件解决方案。 以下是 Android 项目的一些主要特点和资料介绍: 1. 开放源代码:Android 是基于 Linux 内核的开源操作系统,开发人员可以自由获取、使用和修改源代码。 2. 多样化的硬件设备支持:Android 支持多种硬件设备和屏幕尺寸,可以运行于手机、平板电脑、电视、手表等多种设备上。 3. 灵活的用户界面:Android 提供了丰富的用户界面控件和布局方式,可以实现漂亮、个性化的用户界面。 4. 响应式设计:Android 应用程序可以根据设备类型、屏幕尺寸等因素调整布局和显示方式,以适应不同的设备和用户需求。 5. 多媒体支持:Android 支持常见的音频、视频、图像等多媒体格式,可以实现各种多媒体应用。 6. 数据存储Android 提供了多种数据存储方式,包括 SQLite 数据库、文件存储、SharedPreferences 等。 7. 网络通信:Android 支持多种网络通信方式,包括 HTTP、TCP、UDP 等。 8. 社交媒体集成:Android 提供了集成社交媒体的功能,可以实现与 Facebook、Twitter、Google+ 等社交媒体的交互。 # 注意 1. 本资源仅用于开源学习和技术交流。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。 3. 不可商用,一切后果由使用者承担。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值