JAXB性能优化体会

最近在做项目的JAXB性能优化,原来Unmarshal平均每条需要1秒以上。经过优化后,平均每条少于2毫秒。

1. 如果使用newInstance(String contextPath)来创建JAXBContext,每次创建时间非常耗时,第一次在2秒以上,后续创建相同参数的JAXBContext需要1秒以上。如果使用这种方式创建JAXBContext,建议通过contextPath来缓存JAXBContext对象。

2. 如果使用newInstance(Class... classesToBeBound)来创建JAXBContext,则创建时间相比上面的要短,第一次250毫秒左右,后续创建相同参数的JAXBContext非常快。不过使用这种方式创建的JAXBContext需要注意一点,你必须非常清楚你要Unmarshal的顶级Class(就是最后的结果Class), 这个Class直接或间接引用的Class在Unmarshal时都不会有问题,如果有未引用到的Class,则会抛出异常。

3. 在Unmarshal时,上述第2种方式创建的JAXBContext要比第1种方式创建的性能好。如果你非常清楚你Unmarshal最后的结果Class,那么可以使用第2种方式创建,否则请使用第1种方式创建JAXBContext。

4. Marshaller实例对象和Unmarshaller实例对象都是非线程安全的,创建非常快,不要在多线程环境下共享这2个实例对象。JAXBContext实例对象是线程安全的,可以放心共享使用。

 

转载于:https://my.oschina.net/u/1986227/blog/3063624

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值