Repolode
alibaba

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. 1

    下载最新版本的发行包(README 提示该 OSS 链接可能已失效)

    wget https://ompc.oss-cn-hangzhou.aliyuncs.com/jvm-sandbox/release/sandbox-1.3.3-bin.zip
  2. 2

    或者在 Linux 或 macOS 上使用 JDK 1.8 自行打包

    cd bin && ./sandbox-package.sh
  3. 3

    将沙箱挂载到正在运行的 Java 进程(将 33342 替换为你的进程 ID)

    ./sandbox.sh -p 33342

使用前须知

  • README 中声明的支持范围仅为 JDK 6 至 11。
  • 从源码构建需要 JDK 1.8,并且须在 Linux、macOS 或 Unix 下进行,不支持在 Windows 下构建。
  • 采用 LGPL-3.0 许可证,属于 Copyleft 许可。

收录于专题

标签

#java#jvm#aop#instrumentation#runtime-instrumentation#fault-injection#observability#bytecode

常见问题

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 数据每日更新。

相关项目