java – JAXP XSLT document()函数问题

我在使用XSLT转换的java应用程序下工作.我有很多document()调用,所以有可能有java.lang.OutOfMemory异常(我实际上有),因为在每次调用document()函数之后,文档都会被缓存.

http://xml.apache.org/xalan-j/faq.html#faq-N102F9我读到有可能
增加堆内存大小,这不是我的解决方案.我也尝试使用似乎不支持的增量变换.

那么,有没有可能在使用document()函数时关闭jaxp中的文档缓存?

最佳答案
与user1066037的答案一样,希望你可以切换到Saxon. Saxon有一个名为saxon的扩展名:discard-document.它可以在PE或EE版本或Saxon-B中使用.在这里搜索“Saxon-B”:http://saxon.sourceforge.net/

来自撒克逊文件:

saxon:discard-document()

saxon:discard-document($doc as document-node()) ==> document-node()

This function removes a document from Saxon’s internal document pool.
The document remains in memory for the time being,but will be
released from memory by the Java garbage collector when all references
to nodes in the document tree have gone out of scope. This has the
benefit of releasing memory,but the drawback is that if the same
document is loaded again during the same transformation,it will be
reparsed from the source text,and different node identifiers will be
allocated. The function returns the document node that was supplied as
an argument,allowing it to be used in a call such as
select=”saxon:discard-document(document(‘a.xml’))”.

如果您需要一个如何使用saxon的示例:discard-document,请告诉我,我可以发布一个.

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...