BleachBit 6.0.6 是系统清理工具,Windows 便携包 20402357 字节,解开 51151630 字节,启动器 bleachbit.exe 只有 108144 字节。
它要解决的是:临时文件、缓存、日志这些东西每天都在长,谁都不敢手动删,删错了系统起不来。
这次跑的是预览模式,一个文件都没删,只让它算了一遍能清多少东西,顺手量了界面首帧和扫描耗时。
108144 字节的启动器
压缩包 20402357 字节,解开 51151630 字节。两个 exe 都是 108144 字节,真正干活的是同目录下的 Python 运行时和 GTK 库。
| 文件 | 字节 | 说明 |
|---|---|---|
| bleachbit.exe | 108144 | 图形界面入口 |
| bleachbit_console.exe | 108144 | 控制台入口,同一个程序两种外壳 |
| gdbus.exe | 48240 | GTK 的 D-Bus 辅助进程 |
| 解压后目录 | 51151630 | 压缩包 20402357,压缩比 2.5 |
两个入口共用一个内核
图形版和控制台版都是 108144 字节,它们只是加载器,判断有没有窗口环境再决定怎么跑。清理逻辑在 Python 模块里,两边完全一致。
目录比 exe 大 470 倍
51151630 字节里 99.8% 不是那个 108144 字节的 exe,而是 Python 解释器与 GTK 依赖。这也解释了首帧为什么要 1.2 秒。
289 个清理项
控制台版 --list-cleaners 输出的清单有 289 行,每行格式是「程序名.项目名」,从 Adobe Reader 一路排到各种浏览器。
| 项 | 值 |
|---|---|
| 清理项总数 | 289 行 |
| system 分类下的选项 | 11 个 |
| 清单格式 | cleaner.option,如 system.tmp |
system 这一组有 11 个开关
分别是 clipboard、custom、dns_cache、empty_space、logs、memory_dump、muicache、prefetch、recycle_bin、tmp、updates。选哪几个决定了清理范围。
清单里的名字必须原样传
289 行里的每一项都是「程序名.选项名」的组合,--preview 后面跟的就是这个字符串。写错一个字母就会报未知选项。
预览一遍 16.4 秒
对 system.tmp 跑预览,16.40 秒扫出 61928 个文件、算下来能释放 10.4 GB。整个过程只列清单,不删任何东西。
| 指标 | 值 |
|---|---|
| 耗时 | 16.40 秒 |
| 输出行数 | 61930 行 |
| 涉及文件 | 61928 个 |
| 预计可释放 | 10.4 GB |

10.4 GB 全在临时目录里
这 61928 个文件全部来自用户 Temp 与 Windows Temp,单个都不大,最前面几个只有 53 字节、2.1kB、16.7kB。加起来 10.4 GB 说明数量堆出来的体积。
预览的代价是逐条列文件
16.40 秒里大部分时间花在生成 61930 行输出上。只想看总数时这个开销可以接受,要在脚本里频繁调就不合适。
界面 1254 毫秒出来
从启动到窗口可见 1254 毫秒。窗口分左右两块:左边是可清理项的树,右边是说明与结果区。
| 区域 | 内容 |
|---|---|
| 顶部 | 预览、清理、终止三个按钮 |
| 左侧树 | 按程序分组,如 Android Studio、Chromium |
| 右侧 | 当前选项的说明文字与操作结果 |
分组按程序不按文件类型
树的第一层是软件名(Android Studio、Chromium 等),第二层才是具体项目(Gradle 缓存、IDE 缓存、日志)。要清某个软件的痕迹就展开那一个节点。
清理按钮要勾选后才生效
左侧每一项前面有勾选框,没勾的不会被处理。这是它把「预览」和「清理」分开的原因:先看清要删什么,再决定勾哪个。
几个真踩过的点
下面三条在这次测试里真实出现,附当时的处理方式。
| 现象 | 原因 | 处理 |
|---|---|---|
| 传 system.cache 报 Unknown option 'cache' | 这个版本里 system 下没有 cache 这一项 | 先用 --list-cleaners 确认选项名,再传给 --preview |
| 控制台输出全是乱码 | 输出用 GBK 编码,管道按 UTF-8 解码 | 读的时候指定 gbk,中文字才正常 |
| 61930 行输出淹了终端 | 预览逐条列出每个文件 | 重定向到文件后只看最后几行 |
选项名和直觉不一致
想清浏览器缓存时写 system.cache 会直接报错,因为缓存不归 system 管,它在每个浏览器自己的分组下。289 个名字只能靠清单确认,猜不出来。
如果传的选项名不在那 289 行清单里,程序会抛 RuntimeError 并直接退出,此时必须先跑一次 --list-cleaners 确认拼写。选项名改了却沿用旧脚本时,这条报错是唯一的提示。
输出编码是 GBK
把输出接进管道时如果按 UTF-8 解码,「删除」「预计释放磁盘空间」这些字会变成一串问号。脚本里要显式用 gbk 解码,否则连统计行都解析不出来。
什么场景值得上
系统盘告急、又不想逐个文件夹翻临时文件时,它先把能清的列成一张带体积的清单。
| 场景 | 合适度 | 说明 |
|---|---|---|
| 清理临时文件与缓存 | 高 | 61928 个文件 10.4 GB,一条命令列清 |
| 批量清浏览器痕迹 | 高 | 每个浏览器单独一组,逐项可控 |
| 脚本里定时清理 | 中 | 输出 GBK 编码,解析要处理 |
| 只想看磁盘占用 | 低 | 预览 16.4 秒,用专门的磁盘分析工具更快 |
预览和清理是两个动作
预览只读不写,清理才动文件。这个顺序让「先看再删」成为默认流程,也是它敢让普通用户点的原因。
授权与费用
GPL-3.0,个人和商业环境都不收费。源码在 GitHub 上,主要语言 Python,release 覆盖 Windows 与 Linux,Windows 版是便携目录。




