Java 堆空间错误抛出" while transforming 550 mb document"即使堆空间大于文档大小


转换

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

最新更新