正是由于这个原因,JAXB参考实现具有未记录的系统属性:
-Dcom.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.fastBoot=true
或对于软件包重构之前的旧版本:
-Dcom.sun.xml.bind.v2.runtime.JAXBContextImpl.fastBoot=true
这指示JAXB跳过预缓存完成该工作所需的各种反射肌肉的昂贵过程。相反,它将在使用上下文时进行所有反射。这会导致运行速度变慢,但初始化速度却大大加快,尤其是对于大量类而言。
但是,速度问题的一部分是不可避免的,这就是JAXB必须加载您的每个类的事实,并且类加载很慢。如果您在第一个上下文之后立即使用相同的配置创建第二个上下文,这很明显-
您将看到,已经加载了类后,它的速度要快得多。
另外,您说您有多个JAXBContext实例,因为您有多个contextpaths。您是否意识到可以将多个上下文路径放入单个上下文中?初始化上下文时,只需将它们全部以分号分隔的字符串传递即可,例如
JaxbContext.newInstance("a.b.c:x.y.z");将加载上下文
a.b.c和
x.y.z。不过,这可能不会对性能产生任何影响。



