2017-11-20 2 views
1

우리는 Fop.0.9.4에 인쇄합니다. Windows 10 시스템. Xml 파일 1.5mb 크기 (별로 크지 않음). XML 파일에왜 큰 파일에서 FOP가 충돌 했습니까?

이 구조 : XSLT 파일에서

<root> 
<element /> 
<element /> 
<element /> 
<element /> 
... 3000 elements or more 
</root> 

우리가 쓰기

<for-each select="root/element"> 
<block-container> 
    <some-simple-elements> 
</block-container> 
</for-each> 

하면 페이지의 수를 FOP는 일보다, 500 이하, 만 501 장 이상 인쇄가 충돌하는 경우 . 로그에

:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 
at java.util.Arrays.copyOf(Unknown Source) 
at java.lang.AbstractStringBuilder.ensureCapacityInternal(Unknown Source) 
at java.lang.AbstractStringBuilder.append(Unknown Source) 
at java.lang.StringBuffer.append(Unknown Source) 
at org.apache.fop.layoutmgr.AbstractLayoutManager.addChildLM(AbstractLayoutManager.java:317) 
at org.apache.fop.layoutmgr.AbstractLayoutManager.addChildLMs(AbstractLayoutManager.java:331) 
at org.apache.fop.layoutmgr.AbstractLayoutManager.createNextChildLMs(AbstractLayoutManager.java:291) 
at org.apache.fop.layoutmgr.LMiter.hasNext(LMiter.java:40) 
at org.apache.fop.layoutmgr.AbstractLayoutManager.getChildLM(AbstractLayoutManager.java:115) 
at org.apache.fop.layoutmgr.table.TableCellLayoutManager.getNextKnuthElements(TableCellLayoutManager.java:162) 
at org.apache.fop.layoutmgr.table.TableContentLayoutManager.createElementsForRowGroup(TableContentLayoutManager.java:490) 
at org.apache.fop.layoutmgr.table.TableContentLayoutManager.getKnuthElementsForRowIterator(TableContentLayoutManager.java:251) 
at org.apache.fop.layoutmgr.table.TableContentLayoutManager.getNextKnuthElements(TableContentLayoutManager.java:179) 
at org.apache.fop.layoutmgr.table.TableLayoutManager.getNextKnuthElements(TableLayoutManager.java:243) 
at org.apache.fop.layoutmgr.BlockContainerLayoutManager$BlockContainerBreaker.getNextKnuthElements(BlockContainerLayoutManager.java:612) 
at org.apache.fop.layoutmgr.AbstractBreaker.getNextBlockList(AbstractBreaker.java:551) 
at org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java:301) 
at org.apache.fop.layoutmgr.BlockContainerLayoutManager.getNextKnuthElementsAbsolute(BlockContainerLayoutManager.java:509) 
at org.apache.fop.layoutmgr.BlockContainerLayoutManager.getNextKnuthElements(BlockContainerLayoutManager.java:195) 
at org.apache.fop.layoutmgr.StaticContentLayoutManager$StaticContentBreaker.getNextKnuthElements(StaticContentLayoutManager.java:317) 
at org.apache.fop.layoutmgr.AbstractBreaker.getNextBlockList(AbstractBreaker.java:551) 
at org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java:301) 
at org.apache.fop.layoutmgr.StaticContentLayoutManager.doLayout(StaticContentLayoutManager.java:239) 
at org.apache.fop.layoutmgr.PageSequenceLayoutManager.layoutSideRegion(PageSequenceLayoutManager.java:407) 
at org.apache.fop.layoutmgr.PageSequenceLayoutManager.finishPage(PageSequenceLayoutManager.java:415) 
at org.apache.fop.layoutmgr.PageSequenceLayoutManager.makeNewPage(PageSequenceLayoutManager.java:377) 
at org.apache.fop.layoutmgr.PageBreaker.handleBreakTrait(PageBreaker.java:492) 
at org.apache.fop.layoutmgr.PageBreaker.startPart(PageBreaker.java:398) 
at org.apache.fop.layoutmgr.AbstractBreaker.addAreas(AbstractBreaker.java:420) 
at org.apache.fop.layoutmgr.AbstractBreaker.addAreas(AbstractBreaker.java:370) 
at org.apache.fop.layoutmgr.PageBreaker.doPhase3(PageBreaker.java:262) 
at org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java:345) 

답변

1

OOM 나 오세요 (OutOfMemoryError가)는 단순히 JVM은 메모리가 부족합니다 것을 의미한다.

  • 는 JVM이 -Xmx VM 인수를 사용하여 더 많은 메모리를 사용하도록 허용 :이 경우, 당신은 기본적으로 2 개 선택이있다. 예를 들어, JVM이 1GB (1024MB)의 메모리를 사용할 수있게하려면 :

  • 메모리를 적게 사용하도록 응용 프로그램을 개선/수정합니다. moer 정보에 대한 이 링크

http://www.mkyong.com/eclipse/eclipse-java-lang-outofmemoryerror-java-heap-space/

를 통해 이동하시기 바랍니다
관련 문제