JVM-SANDBOX-DEVELOP-20181227日常问题修复
-
功能特性
-
新增: sandbox-api增加ModuleJarUnLoadSpi.java,允许在ModuleJar文件被卸载的时候执行回调,可以在这个回调释放Jar包加载时所申请的资源。(例如:logback的线程池等)
-
新增: 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
-
废弃: sandbox-api将废弃一些高危险类、低使用类
- 废弃
WebSocket
、EventListenerFactory
、ThreadSafeEventListener
,使用的人太少,增加复杂度 - 废弃
@Http
标注,变更为@Command
标注 - 废弃
Sentry
,不规范的使用ThreadLocal容易引起内存泄漏,推荐自己管理或者使用Advice的attach机制 - 废弃
EventMonitor
和sandbox.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>
- 废弃
-
优化: 废弃对内存、性能影响巨大的对象池的实现
沙箱原本依靠对象池来解决运行过程中产生的大量Event对象问题,希望能通过这样的机制降低新声代的压力。但实际使用过程中我们发现:
- 对象池大小不好控制
- 对象池分配/归还对象对性能影响巨大
所以在这个版本中,我们将全局对象池的实现变更为:给每一个线程分配固定数量的Event
-
优化: Spy.SelfCallBarrier对象的锁机制 #109
-
优化: 支持JDK11 #136
-
修复: 沙箱的类分析机制会在SpringBoot触发java.lang.LinkageError异常 #133
-
修复: 沙箱在卸载时会引起“空指针”的问题
-
修复: 沙箱在卸载/重新加载时会引起“对象转换异常”问题 #125
-
修复: 在OpenJDK8下JIT触发崩溃的问题 #130
-
-
不兼容声明
无
-
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