V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zbinlin
V2EX  ›  问与答

微信占用空间简析

  •  
  •   zbinlin · 130 天前 · 2808 次点击
    这是一个创建于 130 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看到 ://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 到电脑上查看,发现其中的一个群组里的图片占多数,但将该群的聊天记录清除后,其占用大小依然不变。

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

    PS:这里清不了的原因有点头绪了,要进一步确认下。
    vmebeh
        15
    vmebeh   130 天前 via iPhone
    建议统计一下文件数量、log 文件分布
    Mithril
        16
    Mithril   130 天前
    @zbinlin 微信的老毛病了,删聊天但是不会删除聊天中的图片缓存。
    更神奇的是你还打不开,缓存的东西就死在那了。直到你卸载了微信再重装( iOS )。
    清理聊天记录或许可以。
    dickinpit
        17
    dickinpit   130 天前
    期待进一步研究成果
    dickinpit
        18
    dickinpit   130 天前   ❤️ 1
    明白了。这个 image2 臭名昭著,QQ 桌面版就有各种缓存图片,基本上每个用户的 QQ 文件夹里,它都是最大的,而且删聊天记录并不会把它一并删掉,而是需要手动时不时把这个文件夹整个删掉。现在看来,手机上的微信也是这个逻辑,只不过以前,image2 在内部存储里,用户不必 root 也能看到,也能像 QQ 一样手动删。但在某个版本之后,微信就把这些东西搬进了 /data/data,不 root 是找不到的。楼主既然能看到,不知直接删掉会怎样......
    icyalala
        19
    icyalala   130 天前
    同一张图片转发到多个群后,本地是指保留一份文件吗?
    如果是这样的话,是不是要走一次 Full GC,Stop-the-World ?
    sobigfish
        20
    sobigfish   130 天前
    大多数开发商都这个怪毛病,一直缓存文件,过期清理? 您自己想起了再手动点吧!
    ahhui
        21
    ahhui   130 天前
    @icyalala 我认为是多张,因为我发现,同一个视频,往其它群里转(长按,转发),有时候是进行的上传操作,而不是直接快传完成。
    yfugibr
        22
    yfugibr   130 天前 via Android   ❤️ 1
    @sobigfish 可惜微信是你想起来也没法清,除非清楚所有数据
    ZeroDu
        23
    ZeroDu   130 天前   ❤️ 1
    刚看了下,微信一共占用 14GB ...
    ccloudk
        24
    ccloudk   130 天前 via Android   ❤️ 1
    可能不舍得存服务器,但又想以后再查吧
    Mithril
        25
    Mithril   130 天前   ❤️ 1
    @icyalala 不会的,它会直接 nuke-the-world 然后从头再来。
    FFFFourwood
        26
    FFFFourwood   130 天前
    真恶心 啥时候 国内能有 tg 之类的 app 替代微信 或者 ios 的 imessgae 普及全平台
    前几天 mac 上微信小助手的也凉了
    zbinlin
        27
    zbinlin   130 天前
    @dickinpit 不敢删除呀 😂
    zbinlin
        28
    zbinlin   130 天前
    @vmebeh 不太清楚哪些是 LOG 文件,这里我把它们都列出来了,paste.ubuntu.com/p/RcCQwWDsJ2/
    delectate
        29
    delectate   130 天前   ❤️ 1
    我有两个问题:
    1 、腾讯的服务器带宽难道廉价到根本不花钱吗?转发这些细碎的文件,难道不占用服务器软硬件和带宽资源吗?
    2 、对于客户来说,大量碎片文件,直接降低了 flash 的 io 性能,而且占用了这么多存储,难道不是硬件厂商的合谋?

    解决方案其实很简单啊,要么给按日期清理的工具,要么删会话则删缓存,至少 qq 都提供类似的工具啊!而且文件都是一样的 md5,也许有心人可以写一个 md5 判重再做软链的脚本,无法挽救细碎的小文件,至少挽救一下可怜无辜的存储空间吧。

    综上所述,我觉得,其实只是单纯的,腾讯的程序员水平太差罢了!
    vmebeh
        30
    vmebeh   129 天前 via iPhone
    @zbinlin 没找着,不知道是不是还是在 /sdcard/tencent 里面

    近四万小文件…
    vmebeh
        31
    vmebeh   129 天前 via iPhone
    疼讯:这么多小文件删起来写入放大谁的手机受得了 🐶
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2336 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:28 · PVG 23:28 · LAX 07:28 · JFK 10:28
    ♥ Do have faith in what you're doing.