JVM-Sandbox 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
JVM-Sandbox 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议: LGPL
开发语言: Java SHELL 查看源码 »
操作系统: 跨平台
开发厂商: 阿里巴巴
收录时间: 2018-01-19
提 交 者: 局长

JVM-Sandbox,JVM 沙箱容器,一种基于 JVM 的非侵入式运行期 AOP 解决方案。

JVM-SANDBOX 的核心功能:

实时无侵入 AOP 框架

在常见的 AOP 框架实现方案中,有静态编织和动态编织两种。

  1. 静态编织
    静态编织发生在字节码生成时根据一定框架的规则提前将 AOP 字节码插入到目标类和方法中,实现 AOP;

  2. 动态编织
    动态编织则允许在 JVM 运行过程中完成指定方法的 AOP 字节码增强。常见的动态编织方案大多采用重命名原有方法,再新建一个同签名的方法来做代理的工作模式来完成 AOP 的功能(常见的实现方案如 CgLib),但这种方式存在一些应用边界:

    • 侵入性
      对被代理的目标类需要进行侵入式改造。比如:在 Spring 中必须是托管于 Spring 容器中的 Bean

    • 固化性
      目标代理方法在启动之后即固化,无法重新对一个已有方法进行 AOP 增强

热部署特性

还有一些实现 AOP 的方式是通过类似热部署的方式完成,但现有的热部署实现方案也存在一些应用边界:

  1. 性能折损巨大

  2. 对 JVM 存在侵入性

  3. 必须启动时显式开启

基于此通过 JDK 6 所提供的 Instrumentation-API 实现了利用 HotSwap 技术在不重启 JVM 的情况下实现对任意方法的 AOP 增强。而且性能开销还在可以接受的范围之内。

动态可插拔容器

为了实现沙箱模块的动态热插拔,容器客户端和沙箱动态可插拔容器采用 HTTP 协议进行通讯,底层用 Jetty8 作为 HTTP 服务器。

JVM 沙箱都有哪些可能的应用场景

  • 线上故障定位

  • 线上系统流控

  • 线上故障模拟

  • 方法请求录制和结果回放

  • 动态日志打印

  • 安全信息监测和脱敏

除此之外,JVM 沙箱还能帮助你做很多很多……

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

JVM-Sandbox 的相关资讯

还没有任何资讯

JVM-Sandbox 的相关博客

jvm-sandbox内存泄漏的严重BUG

我们的A应用第一次出现宕机是4号节点,时间在2019-11-24 晚上19点 原因是发生了fullGC,根本原因是元数据空间爆了。 2019-12-...

修改jvm-sandbox源码导致的线程安全问题

今天收到运维同事的消息,广告组某应用cpu从5月29号下午16:30开始陡增不下,本着对问题的好奇心帮忙排查了下这个问题。 首先看...

jvm-sandbox-repeater学习笔记之配置说明

本文主要介绍jvm-sandbox-repeater项目中各个配置文件,包括其字段说明、配置文件作用以及修改生效的方法。 系列文章导航: ...

阿里线上问题诊断工具Arthas和jvm-sandbox

大纲目录 这篇文章是之前学习Arthas和jvm-sandbox的一些心得和总结,希望能帮助到大家。本文字较多,可以根据目录进行对应的阅...

java -d . **.java 与 java **.java 的区别

如何在命令行模式下运行带包的java文件 https://blog.csdn.net/lytor/article/details/17048361 javac,使用"-d ."与省略-d的...

java JDBC

JDBC(Java DataBase Connectivity, java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,...

Java ThreadLocal

Java的ThreadLocal变量用来创建线程本地变量。我们知道,一个对象上的所有线程,都会共享该对象的变量,所以这些共享的变量不...

Java的ThreadLocal

简介 ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互...

java 之ThreadLocal

java 之ThreadLocal

java_jdbc

jdbc:数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组...

JVM-Sandbox 的相关问答

还没有任何问答,马上提问

评论 (9)

加载中
不明觉蠢,破坏代码的可阅读性和可修改性,你强制用第三方沙箱拦截了这个方法,如果有一天,这个方法真的需要修改了,结果程序员发现自己修改后没调用,依旧被沙箱的逻辑拦截了。最可怕的是程序员不知道有个第三方在控制自己的代码,百思不得其解,最后跳楼自杀
2018/05/24 16:41
回复
举报
我也是觉得不知道怎么用
2018/02/01 09:11
回复
举报
不明觉厉
2018/01/30 21:16
回复
举报
打分: 力荐
mark
2018/01/30 15:03
回复
举报
打分: 力荐
不明觉厉
2018/01/30 14:35
回复
举报
易用性怎么样?
2018/01/30 13:30
回复
举报
打分: 力荐
看了一遍文档,知道如何部署,但不知道怎么使用,要是有一个完整的demo说明就好了。
2018/01/30 10:52
回复
举报
看着很厉害的样子 mark下
2018/01/30 09:23
回复
举报
打分: 力荐
好项目
2018/01/30 09:13
回复
举报
更多评论
9 评论
123 收藏
分享
返回顶部
顶部