Skip to content

jvm-sandbox@1.2.0

Compare
Choose a tag to compare
@dongchenxu dongchenxu released this 02 Feb 15:31
· 269 commits to master since this release

JVM-SANDBOX-DEVELOP-20181227日常问题修复

  • 1.2.0版本二进制包下载

  • 功能特性

    1. 新增: sandbox-api增加ModuleJarUnLoadSpi.java,允许在ModuleJar文件被卸载的时候执行回调,可以在这个回调释放Jar包加载时所申请的资源。(例如:logback的线程池等)

    2. 新增: sandbox-api增加Command.java标注,用于替代@Http标注。@Command标注的好处在于他可以让你摆脱对javax.servlet的依赖。@Command标注在方法上,支持三类入参类型

      • URL的单值参数转换成Map:java.util.Map<String,String>
      • URL的多值参数转换成Map:java.util.Map<String,String[]>
      • 文本输出:java.io.PrintWriter
    3. 废弃: sandbox-api将废弃一些高危险类、低使用类

      • 废弃WebSocketEventListenerFactoryThreadSafeEventListener,使用的人太少,增加复杂度
      • 废弃@Http标注,变更为@Command标注
      • 废弃Sentry,不规范的使用ThreadLocal容易引起内存泄漏,推荐自己管理或者使用Advice的attach机制
      • 废弃EventMonitorsandbox.properties中关于对象池的配置,因为已经废弃了对象池
      • 废弃sandbox-api模块对javax.servlet的依赖,因兼容性的需求所以maven中的依赖尚未废除,但你确定用@Command标注代替@Http标注之后,可以在依赖中exclusion掉
        <dependency>
          <groupId>com.alibaba.jvm.sandbox</groupId>
          <artifactId>sandbox-api</artifactId>
          <scope>provided</scope>
          <exclusions>
              <exclusion>
                  <groupId>javax.servlet</groupId>
                  <artifactId>servlet-api</artifactId>
              </exclusion>
          </exclusions>
        </dependency>
    4. 优化: 废弃对内存、性能影响巨大的对象池的实现

      沙箱原本依靠对象池来解决运行过程中产生的大量Event对象问题,希望能通过这样的机制降低新声代的压力。但实际使用过程中我们发现:

      • 对象池大小不好控制
      • 对象池分配/归还对象对性能影响巨大

      所以在这个版本中,我们将全局对象池的实现变更为:给每一个线程分配固定数量的Event

    5. 优化: Spy.SelfCallBarrier对象的锁机制 #109

    6. 优化: 支持JDK11 #136

    7. 修复: 沙箱的类分析机制会在SpringBoot触发java.lang.LinkageError异常 #133

    8. 修复: 沙箱在卸载时会引起“空指针”的问题

    9. 修复: 沙箱在卸载/重新加载时会引起“对象转换异常”问题 #125

    10. 修复: 修复沙箱因使用ThreadLocal不当引起内存泄漏问题 #123 #108

    11. 修复: 修复沙箱因堆栈使用不当引起堆栈错位问题 #123 #117

    12. 修复: 在OpenJDK8下JIT触发崩溃的问题 #130

    13. 其他修复: #126 #128 #121 #118

  • 不兼容声明

  • API

    GROUP-ID ARTIFACT-ID VERSION
    com.alibaba.jvm.sandbox sandbox-api 1.2.0
    com.alibaba.jvm.sandbox sandbox-module-starter 1.2.0