1

我的程序有一个多线程环境,我无法控制线程的产生,但我使用的一些框架可以控制。

我发现使用的newTemplates(XSLstreamsource)是线程安全的,而whilenewTransformer(XSLstreamsource)不是。但实际上,我想知道的是,这两者在将实现类加载到 JVM 方面是否有任何区别。

我现在面临的问题是每个newTransformer调用(在各个线程中)都会加载类,从而高度占用 perm gen 内存部分。

我想知道是否newTemplates只加载一次类,而不是newTransformer. 还是有避免每次加载类的解决方案?

4

1 回答 1

1

将“ Templates”对象视为已编译的样式表,将“ Transformer”对象视为已加载并准备执行的样式表。

Templates如果可能,您希望重用该对象,因此您只编译一次样式表,但Transformer为每个转换创建一个新的效果非常好,重用它的意义很小(允许连续重用它,即开始前一个电话结束后的另一个transform()电话;但这样做没有任何好处。)

于 2013-05-05T11:51:13.057 回答