一个免费的 Java 代码覆盖率库,用于统计测试实际执行了哪些字节码。
alibaba/jvm-sandbox
一个基于 JVM 的沙箱容器,可在不重启、不侵入目标应用的情况下进行运行期 AOP 增强。
- Star
- 6,953
- Fork
- 1,586
- 未关闭 Issue
- 49
- 最近提交
- 2个月前
这是什么?
JVM-SANDBOX 是一个面向 Java 的 AOP 框架容器,可以挂载到正在运行的 JVM 上,在运行期对目标方法进行增强。目标应用无需重启或改造,模块可以随时加载和卸载,且不会在应用中留下痕迹。
沙箱把每次方法调用拆分为 BEFORE、RETURN 和 THROWS 三个环节,模块可以读取或修改入参、返回值和异常,也可以直接中断方法执行。沙箱与模块使用各自独立的类加载器运行,不会与应用的类相互冲突。项目基于 Instrumentation 实现,支持 JDK 6 至 11。
常见用途包括线上故障定位、动态日志打印、故障注入、方法请求录制与回放、流量控制以及敏感信息监测与脱敏。
核心功能
- 01无需重启或修改目标应用即可挂载到运行中的 JVM。
- 02模块可以读取或修改方法的入参、返回值和异常。
- 03通过自定义类加载器与应用类隔离,避免类冲突。
- 04模块支持随时加载与卸载,卸载后不留痕迹。
- 05支持多租户,各租户的沙箱可独立控制。
- 06支持 JDK 6 至 11。
适用场景
- 在不重新发布的情况下为线上方法动态添加日志,定位问题。
- 向方法注入故障,验证系统的异常处理能力。
- 录制方法调用及结果并用于回放测试。
- 监测或脱敏经过应用方法的敏感数据。
快速上手
- 1
下载最新版本的发行包(README 提示该 OSS 链接可能已失效)
wget https://ompc.oss-cn-hangzhou.aliyuncs.com/jvm-sandbox/release/sandbox-1.3.3-bin.zip - 2
或者在 Linux 或 macOS 上使用 JDK 1.8 自行打包
cd bin && ./sandbox-package.sh - 3
将沙箱挂载到正在运行的 Java 进程(将 33342 替换为你的进程 ID)
./sandbox.sh -p 33342
使用前须知
- README 中声明的支持范围仅为 JDK 6 至 11。
- 从源码构建需要 JDK 1.8,并且须在 Linux、macOS 或 Unix 下进行,不支持在 Windows 下构建。
- 采用 LGPL-3.0 许可证,属于 Copyleft 许可。
收录于专题
标签
常见问题
- jvm-sandbox 是什么?
- 一个基于 JVM 的沙箱容器,可在不重启、不侵入目标应用的情况下进行运行期 AOP 增强。 JVM-SANDBOX 是一个面向 Java 的 AOP 框架容器,可以挂载到正在运行的 JVM 上,在运行期对目标方法进行增强。目标应用无需重启或改造,模块可以随时加载和卸载,且不会在应用中留下痕迹。
- jvm-sandbox 可以免费使用吗?用的什么许可证?
- jvm-sandbox 以 LGPL-3.0 许可证开源。用于商业产品前,请先确认许可证条款。
- jvm-sandbox 还在维护吗?
- 半年内有更新。jvm-sandbox 最近一次提交是在 2026年9月9日。
- jvm-sandbox 适合用来做什么?
- 在不重新发布的情况下为线上方法动态添加日志,定位问题。 向方法注入故障,验证系统的异常处理能力。 录制方法调用及结果并用于回放测试。 监测或脱敏经过应用方法的敏感数据。
- jvm-sandbox 怎么安装和运行?
- 下载最新版本的发行包(README 提示该 OSS 链接可能已失效): wget https://ompc.oss-cn-hangzhou.aliyuncs.com/jvm-sandbox/release/sandbox-1.3.3-bin.zip 或者在 Linux 或 macOS 上使用 JDK 1.8 自行打包: cd bin && ./sandbox-package.sh 将沙箱挂载到正在运行的 Java 进程(将 33342 替换为你的进程 ID): ./sandbox.sh -p 33342
- 在哪里获取 jvm-sandbox?
- 源代码和安装说明在 GitHub 上:https://github.com/alibaba/jvm-sandbox
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
基于 JavaAgent 的高性能 Java 性能监控工具,无需修改应用代码即可采集方法与 JVM 指标。
用于查看和编辑 Java class 文件的字节码工具,并提供 Kotlin Multiplatform 读写库。
Prometheus 官方 Python 客户端库,用于以 Prometheus 格式暴露应用指标。
面向 Go 的编译期 OpenTelemetry 插桩工具,只需在 go build 前加 otel 即可接入链路追踪与指标,无需修改业务代码。
用于设计、开发和评估自主 AIOps 智能体的 Python 框架,可在模拟的微服务云环境中运行。