用水果忍者的方式释放 Chrome 浏览器内存
一个创新的 Chrome 扩展,将枯燥的内存管理变成有趣的游戏体验。当标签页闲置时,它们会变成水果飞上屏幕,挥动鼠标切割它们,释放内存!
- 水果忍者风格:闲置标签页变成水果,挥动鼠标切割释放内存
- 真实物理引擎:重力、抛物线、旋转动画,完全还原水果忍者体验
- 华丽视觉效果:果汁飞溅、3D阴影、发光刀光、粒子特效
- 自动监控:每分钟检查闲置标签页(默认 15 分钟无操作视为闲置)
- 双水果模式:每次抛出 2 个水果,切中任意一个释放对应内存
- 无限制生成:取消每小时水果数量限制,有闲置标签就生成
- 内存回收:每切割一个标签页可释放 30-500MB 系统内存
- 超长刀光轨迹:80 个采样点,0.8 秒淡出,前粗后细渐变效果
- 智能轨迹采样:快速滑动自动插值,确保丝滑无断点
- 中心区域抛出:水果从屏幕中央 30%-70% 区域抛出,向中心汇聚
- 鼠标手势切割:无需点击,快速滑动鼠标即可切割
- 智能游戏循环:无水果时自动暂停,CPU < 0.1%
- Canvas 上下文缓存:避免重复创建,内存占用 < 8MB
- 自动内存清理:完整的 DOM 清理和引用释放机制
🍎
🍊
————————————————> (刀光轨迹)
_________________________
闲置标签页变成水果飞上来!
- 📊 统计数据:已释放标签数、切割成功数、释放内存量
- ⚙️ 设置选项:启用/禁用监控、自定义闲置阈值
- 🎮 快捷操作:立即检查、重置统计
-
克隆仓库
git clone https://github.com/yehlv/Memory-Ninja.git cd Memory-Ninja -
打开 Chrome 扩展页面
- 访问
chrome://extensions/ - 开启右上角的「开发者模式」
- 访问
-
加载扩展
- 点击「加载已解压的扩展程序」
- 选择项目文件夹
-
开始使用
- 扩展图标会出现在工具栏
- 打开多个标签页,等待闲置标签变成水果!
🚧 即将上线 Chrome Web Store
-
安装后自动监控
- 插件会自动监控所有标签页
- 默认 15 分钟无操作的标签页会被标记为闲置
-
水果出现
- 每分钟检查一次闲置标签
- 闲置标签会变成水果从屏幕底部抛出(每次 2 个)
- 水果上显示标签页标题和预估内存占用
-
切割水果
- 无需点击,快速滑动鼠标光标即可
- 切中水果后会分成两半,果汁飞溅
- 对应的标签页被卸载,内存立即释放
-
查看效果
- 点击工具栏图标打开控制面板
- 查看已释放的标签数和内存量
- 被卸载的标签页标题会变灰,点击可恢复
1. 点击扩展图标打开控制面板
2. 找到「闲置阈值」设置
3. 输入 1-1440 分钟之间的数值
4. 点击「应用」按钮
1. 打开控制面板
2. 点击「立即检查闲置标签」按钮
3. 如果有闲置标签,水果会立即出现
1. 打开控制面板
2. 点击「重置统计数据」按钮
3. 所有计数器归零
- ✅ 标签页闲置时间 ≥ 设定阈值(默认 15 分钟)
- ✅ 总标签数 ≥ 5 个
- ✅ 不包括:当前活动标签、已卸载标签、固定标签
- ✅ 系统页面(chrome://, edge:// 等)无法生成水果
// 真实的物理参数
重力加速度: 0.4 px/frame²
初始上抛速度: -28 px/frame
水平速度: 智能向屏幕中心靠拢
旋转速度: ±5 度/frame// 刀光轨迹参数
轨迹点数量: 80 个
淡出时间: 800ms
采样间隔: 8px
渐变效果: 前粗后细(8px → 2px)
透明度: 前深后淡(100% → 30%)- 检测半径:80px
- 速度阈值:0.3 px/ms(防止误触发)
- 算法:线段与圆形的碰撞检测
- Manifest V3:最新的 Chrome 扩展 API
- Canvas API:高性能轨迹绘制和粒子系统
- requestAnimationFrame:60fps 游戏循环
- Chrome Tabs API:标签页监控和卸载
- 物理引擎:重力、速度、抛物线运动
- 碰撞检测:线-圆相交算法
- 插值采样:贝塞尔曲线和线性插值
- 粒子系统:30 个果汁粒子独立物理模拟
- Canvas 上下文缓存
- 智能游戏循环(无活动时自动暂停)
- DOM 元素和引用完全清理
- 过期轨迹点自动删除
Memory-Ninja/
├── manifest.json # 扩展配置文件
├── background.js # 后台服务:监控标签页
├── content.js # 内容脚本:游戏逻辑和物理引擎
├── styles.css # 样式:水果、特效、动画
├── popup.html # 控制面板 UI
├── popup.js # 控制面板逻辑
├── icons/ # 图标资源
│ ├── icon16.png
│ ├── icon48.png
│ └── icon128.png
└── README.md # 项目文档
# 1. 克隆仓库
git clone https://github.com/yehlv/Memory-Ninja.git
cd Memory-Ninja
# 2. 在 Chrome 中加载扩展
# chrome://extensions/ → 开发者模式 → 加载已解压的扩展程序
# 3. 修改代码后刷新扩展
# chrome://extensions/ → 点击扩展的刷新按钮调试 Background Script:
// background.js 中查看日志
chrome://extensions/ → 背景页 → 检查视图
console.log('🔍 调试信息');调试 Content Script:
// 在任意网页打开开发者工具
F12 → Console
console.log('🎮 游戏逻辑');快速测试:
// 在控制台手动触发检查
chrome.runtime.sendMessage({ action: 'manualCheck' });修改 content.js 中的配置:
const CONFIG = {
fruitSize: 150, // 水果大小
gravity: 0.4, // 重力强度
initialVelocityY: -28, // 抛出速度
mouseTrailLength: 80, // 轨迹长度
mouseTrailFadeTime: 800, // 轨迹淡出时间
// ... 更多配置
};- ✨ 超长刀光轨迹(80 点,0.8秒淡出)
- ⚡ 每次抛出 2 个水果
- 🎯 水果从中央区域抛出,轨迹向中心汇聚
- 🔧 默认闲置阈值调整为 15 分钟
- ✨ 多水果生成:每次抛出 2 个不同的水果
- 🎮 智能时间间隔:200-400ms 错开
- 🎯 优化水果抛出位置:集中在屏幕中央 30%-70% 区域
- 🧮 智能水平速度:自动向屏幕中心靠拢
- 🚀 移除每小时水果生成限制
- 💾 内存优化:智能游戏循环、Canvas 缓存
- 🎨 前粗后细渐变轨迹
- ⚡ 提升物理参数:水果飞到屏幕中央以上
- 🖱️ 鼠标手势切割:无需点击按钮
- 🎮 完全重写:真实物理引擎
- 🍎 150px 大水果(提升 188%)
- ✨ 水果分裂、果汁飞溅、3D 视觉效果
- ⚙️ 自定义闲置阈值设置
- 📊 增强的日志和调试功能
- 🎉 初始版本
- ✅ 基础的标签页监控和卸载功能
欢迎贡献代码、报告问题或提出建议!
- 在 Issues 页面创建新问题
- 请详细描述问题和重现步骤
- 附上截图或录屏更佳
- Fork 本仓库
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
A: 检查以下条件:
- 总标签数 ≥ 5 个
- 有标签页闲置时间 ≥ 15 分钟
- 当前页面不是系统页面(chrome://, edge:// 等)
- 扩展已启用(点击图标查看控制面板)
A: 标签页被卸载但没有关闭:
- 标签页标题会变灰色
- 点击标签页会自动重新加载
- 可以在 Chrome 历史记录中找到
A: 不会!
- 无水果时 CPU < 0.1%
- 内存占用 < 8MB
- 智能游戏循环自动暂停
A: 可以!
- 方法 1:直接点击被卸载的标签页
- 方法 2:使用 Chrome 历史记录恢复
A: 目前仅支持 Chrome 和基于 Chromium 的浏览器(Edge, Brave 等)
A: 能!
- 卸载标签页会释放 Chrome 占用的系统内存
- 每个标签页可释放 30-500MB
- 操作系统会立即回收这些内存
- 其他应用程序可以使用释放的内存
- 添加音效(切割声、成功声)
- 成就系统(连击、完美切割等)
- 自定义主题和水果皮肤
- 一键释放所有闲置标签
- 白名单功能(永不释放特定网站)
- 自动清理浏览器缓存
- Chrome 应用商店发布
本项目采用 MIT License 开源协议。
- 灵感来源:Fruit Ninja 经典游戏
- 感谢所有贡献者和用户的支持
如果这个项目对你有帮助,欢迎请作者喝杯咖啡 ☕
如果觉得有用,也请给个 ⭐ Star 支持一下!