微信占用空间简析

2021-07-21 23:38:41 +08:00
 zbinlin

看到 ://www.v2ex.com/t/789383 关于微信占用空间的讨论,刚好我手机里存储空间也告急了,想清理下,就查看了下微信的空间占用情况。

通过系统的 App 详情那里查看到 App site 为 379 MB 、User data 为 6.20 GBa,然后查看了微信自带的 Manage Storage 统计,Wechat Storage Used 为 5.8 GB,其中 Chat Histories 占用 1.8 GB 。

然后我粗略地统计了 /data/data/com.tencent.mm/ 下各文件夹的占用情况(总共占用 3.9 GB,这里只列出占用比较大的目录)

42M	./cache
528M	./files
1.9G	./MicroMsg
120M	./app_webview_com_tencent_mm
17M	./app_tbs
11M	./app_webview_com_tencent_mm_tools
584M	./app_webview_com_tencent_mm_sandbox
97M	./app_tbs_64
186M	./tinker
37M	./app_x5webview
105M	./app_xwalk_2852
178M	./app_xwalk_2691
102M	./lib-0

3.9 + 1.8 ~= 5.8,基本符合 Storage 里的统计。

以下是 ./MicroMsg 的目录统计:

299M	./MicroMsg/expansions
1.2G	./MicroMsg/54******************************
	1.1G	./MicroMsg/54******************************/image2
	12M	./MicroMsg/54******************************/avatar
	65M	./MicroMsg/54******************************/EnMicroMsg.db
	88M	./MicroMsg/54******************************/appbrand
307M	./MicroMsg/webview_tmpl
6.8M	./MicroMsg/appbrand
1.5M	./MicroMsg/webcompt
40M	./MicroMsg/luckymoney
14M	./MicroMsg/CheckResUpdate

这里面在我的账号(54******************************)下,发现 image2 这个文件夹占的比重最大,里面应该是一些图片。 将其 pull 到电脑上查看,发现其中的一个群组里的图片占多数,但将该群的聊天记录清除后,其占用大小依然不变。

5111 次点击
所在节点    问与答
31 条回复
dji38838c
2021-07-21 23:42:46 +08:00
聊天记录清除后,文件没有被删除吗?
zbinlin
2021-07-21 23:51:47 +08:00
@dji38838c 这里我执行的是 Chat Info -> Clear Chat History 的操作,确实没有删除在 `./MicroMsg/54******************************/image2`里的图片,但好像还有一个在 General -> Manage Storage -> Manage 选择对应的联系人来删除的,不知道这个操作是否有效。

另外要注意下,这里的 `./MicroMsg/54******************************/image2` 是在 `/data/data/com.tencent.mm/` 目录下的,而不是在 `/sdcard/Android/data/com.tencent.mm` 下的。我觉得后者才是用户空间,前者应该是程序空间,但为什么在程序空间下会存储用户数据,由于不懂 Android 不是很理解。
bclerdx
2021-07-22 00:13:27 +08:00
关注此贴。
jim9606
2021-07-22 00:29:26 +08:00
@zbinlin 按照 Android 设计,/data/data 适合存放敏感数据,因为在所有 Android 版本中这个目录都只能由 APP 自己读写,没有不使用 root 越权访问的方法。/sdcard/Android/data 适合较大体积非敏感数据,可能位于可拆除的 SD 卡上,可能不受系统加密保护,且在 Android11 强制实现分区存储前,其他拥有存储权限的 APP 可以越权读写该目录,启用分区存储后,用户可以依然通过 adb 或 mtp 读写该目录。
jim9606
2021-07-22 00:37:04 +08:00
考虑到 /sdcard 可能不受加密和权限控制保护,微信选择将聊天记录放 /data/data 还算可以理解。另外放 /sdcard/Android/data 有可能会被别的 APP 偷数据或者乱改(“优化”)改坏,TX 还不好追踪是谁的锅。如果放 /data/data,只要没 root 那要么是系统自带的 app 干的要么是微信自己干的,好查 bug 。
imldy
2021-07-22 00:54:40 +08:00
webview 简直了
so1n
2021-07-22 00:55:03 +08:00
我记得之前的版本群里每收到一个小程序,手机就存一张小程序的照片,即使你没打开这个群,删除这个群也不会删除小程序的照片 巨恶心
zbinlin
2021-07-22 01:08:26 +08:00
@jim9606 我之前还以为它聊天记录是加密保存在 /sdcard/tencent/ 或 `/sdcard/Android/data/` 下的呢 😅
sapphires
2021-07-22 01:57:38 +08:00
@so1n 是的,加了一个微信读书群,之前一段时间每天都要手动清理上千张完全相同的微信读书小程序封面,吐了。
derekwei
2021-07-22 08:25:41 +08:00
借用对领导干部说的那句话:当自觉净化“朋友圈”
yyysuo
2021-07-22 08:49:06 +08:00
因为是 log,并不是聊天记录,所以清除不了吧。
levelworm
2021-07-22 08:54:42 +08:00
微信我觉得就是程序员懒,反正什么都不清理堆在那里。
smdbh
2021-07-22 09:27:03 +08:00
搞清楚了,那 512g 手机怎么卖
zbinlin
2021-07-22 09:35:53 +08:00
@yyysuo 那是 image2 里的图片,有 2 万多张,不是 log 。

PS:这里清不了的原因有点头绪了,要进一步确认下。
vmebeh
2021-07-22 10:20:53 +08:00
建议统计一下文件数量、log 文件分布
Mithril
2021-07-22 10:44:29 +08:00
@zbinlin 微信的老毛病了,删聊天但是不会删除聊天中的图片缓存。
更神奇的是你还打不开,缓存的东西就死在那了。直到你卸载了微信再重装( iOS )。
清理聊天记录或许可以。
dickinpit
2021-07-22 10:58:14 +08:00
期待进一步研究成果
dickinpit
2021-07-22 12:05:51 +08:00
明白了。这个 image2 臭名昭著,QQ 桌面版就有各种缓存图片,基本上每个用户的 QQ 文件夹里,它都是最大的,而且删聊天记录并不会把它一并删掉,而是需要手动时不时把这个文件夹整个删掉。现在看来,手机上的微信也是这个逻辑,只不过以前,image2 在内部存储里,用户不必 root 也能看到,也能像 QQ 一样手动删。但在某个版本之后,微信就把这些东西搬进了 /data/data,不 root 是找不到的。楼主既然能看到,不知直接删掉会怎样......
icyalala
2021-07-22 12:25:44 +08:00
同一张图片转发到多个群后,本地是指保留一份文件吗?
如果是这样的话,是不是要走一次 Full GC,Stop-the-World ?
sobigfish
2021-07-22 12:38:21 +08:00
大多数开发商都这个怪毛病,一直缓存文件,过期清理? 您自己想起了再手动点吧!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/790952

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX