Published on

2026-第七周

Authors

该周报主要为各个地方内容的汇总整理

技术

在 DevTools 中查找 JavaScript 中特定对象的分配位置

本文介绍了一种在 Chrome DevTools 内存分析器中追踪特定对象创建位置的方法,适用于调试时因对象被回收或难以筛选而无法定位来源的情况。

  • 🐛 调试痛点:在调试网络请求或大型代码库时,常因调用栈被隐藏或对象被回收而难以定位特定对象的创建位置。
  • 📊 内存分析器限制:Chrome DevTools 的“时间轴上的分配”功能可显示对象分配位置,但对象可能已被清理,且筛选条件(如分配时间、构造函数名)往往不够精确。
  • 💡 核心技巧:通过故意泄露对象使其在内存分析中可见。具体步骤包括:开启分配堆栈跟踪、在调试器中暂停并将对象保存为全局变量、在控制台创建具有独特类名的新对象来引用目标值。
  • 🔍 筛选定位:停止分析后,在内存分析器中按类名(如 AAAAAAAA)筛选,即可找到目标对象及其完整的创建堆栈跟踪。

工具

prek

prek 是一个用 Rust 重写的 pre-commit 替代工具,旨在提供更快的速度、零依赖的单二进制体验,并完全兼容原有的 pre-commit 配置。它通过并行化处理、共享工具链和集成 uv 等优化,显著提升了钩子运行效率,并支持单仓库多项目配置。目前已被 CPython、Apache Airflow 等知名项目采用。

  • 🚀 性能优化 – 比 pre-commit 更快,占用磁盘空间更少,支持并行克隆仓库和运行钩子。
  • 📦 零依赖便携 – 仅需单个二进制文件,无需安装 Python 或其他运行时环境。
  • 🔧 完全兼容 – 支持原有 pre-commit 的配置文件与钩子,可无缝迁移。
  • 🏗️ 内置增强功能 – 支持单仓库多项目工作区、自动管理 Python 版本与虚拟环境,并提供 Rust 原生内置钩子。
  • ⚙️ 智能工具链 – 使用 uv 管理 Python 依赖,共享 Node.js、Go 等语言工具链,减少重复安装。
  • 🌍 广泛采用 – 已被 FastAPI、Ruff、Home Assistant 等众多开源项目使用或推荐。

更新

设计

AI

其他