com.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize的用法和性能

时间:2018-01-23 01:58:00

标签: java xml compilation jaxb compiler-optimization

我们遇到了Jaxb classCastException突出显示的JaxB类加载问题。

为了解决这个问题,我添加了 com.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize = true ,这实际上解决了这个问题。

但是,我读到这将禁用Jaxb直接与字节码交互并通过Java Reflection API的能力,因此在通过“ JAXBContext.newInstance 启动新的Jaxb上下文时可能会有轻微的性能损失”

为了测试性能,我添加了一个简单的方法,它在for循环中调用JAXBContext.newInstance大约500次。我用flag = true和= false运行它。

在最糟糕的情况下,我发现每次调用的平均性能仅为3.5毫秒。

是否有人遇到类似问题并尝试过上述修复程序?你的发现是什么?我找不到关于 com.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize 的更多信息。您能分享一下有关其行为和影响的更多信息吗?

1 个答案:

答案 0 :(得分:1)

IBM提供的有关JAXB上下文初始化的文档可能会帮助您:JAXBContext Initialization Takes A Long Time

  

问题(摘要)

     

JAXBContext初始化会降低应用程序性能。

     

症状

     

WebSphere Application Server中的性能降低。

     

原因

     

JAXB上下文(javax.xml.bind.JAXBContext)对象实例化是一种资源密集型操作。 JAXB上下文实例化涉及与上下文关联的所有程序包和类的上下文的预加载和预创建(称为预缓存过程),然后涉及从中静态(直接和间接)引用的所有程序包和类。那些。性能延迟将与在此预缓存过程中创建JAXB时传递的类的数量相关。