XSLT와 XML 변환 할 때 나는이 예외를 얻고있다 : 나는 색슨-HE을 사용하고Grails의 XSLT 변환, OutOfMemoryError가 : Java 힙 공간
Caused by: java.lang.OutOfMemoryError: Java heap space
at net.sf.saxon.tree.tiny.TinyTree.condense(TinyTree.java:430)
at net.sf.saxon.tree.tiny.TinyBuilder.close(TinyBuilder.java:206)
at net.sf.saxon.event.ReceivingContentHandler.endDocument(ReceivingContentHandler.java:244)
at net.sf.saxon.event.Sender.sendSAXSource(Sender.java:449)
at net.sf.saxon.event.Sender.send(Sender.java:177)
at net.sf.saxon.Controller.makeSourceTree(Controller.java:1910)
at net.sf.saxon.s9api.XsltTransformer.transform(XsltTransformer.java:573)
at net.sf.saxon.jaxp.TransformerImpl.transform(TransformerImpl.java:185)
at com.lomnido.service.XsltTransformService.$tt__transform(XsltTransformService.groovy:27)
을, 버전 9.7.0-5
내 코드를 :
TransformerFactory factory = TransformerFactory.newInstance();
StreamSource xsltStream = new StreamSource(xslt)
factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
Transformer transformer = factory.newTransformer(xsltStream);
StreamSource ins = new StreamSource(input);
File tmp = File.createTempFile("test", "xslttransform")
StreamResult out = new StreamResult(tmp);
transformer.transform(ins, out);
xml 파일의 크기는 약 100MB입니다. 이 문제를 피할 수있는 방법이 있습니까? 입력 파일을 스트리밍하는 것과 같은 것이 있습니까? 색슨에 대한 대안이 있습니까? 내 변환을 위해 xslt 2.0이 필요합니다. 100Mb 이더넷 소스 문서를 처리
안부, 피터
확인 : https://stackoverflow.com/questions/19764275/java-lang-outofmemoryerror-while-transforming-xml-in-a-huge-directory –