转换
550 MB 文档时引发 Java 堆空间错误,即使堆空间大于文档大小。
我的代码使用
1.xsl:stylesheet of xslt transformation
2.net.sf.saxon.TransformerFactoryImpl
3.trans.transform(new StreamSource(file), result);
谢谢摩尼
通常,对于 Saxon,源文档作为树占用的空间大约是词法 XML 大小的 5 倍。当然,比例可能会有所不同,具体取决于文档的复杂性。因此,对于550Mb,分配3Gb应该就足够了。在启动 Java 时使用 -Xmx 选项来分配足够的堆空间。
你已接近使用传统内存中转换可以执行的操作的极限,因此你可能想要查看用于执行流式转换的选项。有关这方面的信息,请参阅 http://saxonica.com/documentation/#!sourcedocs/streaming