我正在使用 Java 8 運(yùn)行 apache poi 4.0.0 并嘗試用數(shù)據(jù)填充模板并將其保存到輸出流。這會(huì)在將工作簿寫入目標(biāo)路徑時(shí)導(dǎo)致問題,但僅在以調(diào)試模式/在其他計(jì)算機(jī)上運(yùn)行時(shí)才會(huì)出現(xiàn)。模板文件在填充數(shù)據(jù)之前的大小為 7.5 MB我對(duì)其進(jìn)行了調(diào)試,發(fā)現(xiàn)方法調(diào)用worksheet.save(out, xmlOptions);在XSSFSheet某個(gè)時(shí)候停止了。調(diào)試值out:class: org.apache.poi.openxml4j.opc.internal.MemoryPackagePartOutputStreampart: Name: /xl/worksheets/sheet10.xml - Content Type: application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xmlpart-relationships: 3 relationship(s) = [/xl/worksheets/_rels/sheet10.xml.rels,/xl/worksheets/sheet10.xml,/xl/worksheets/_rels/sheet10.xml.rels]調(diào)試值xmlOptions:SAVE_USE_DEFAULT_NAMESPACE=nullCHARACTER_ENCODING=UTF-8SAVE_OUTER=nullSAVE_SUGGESTED_PREFIXES={http://schemas.openxmlformats.org/drawingml/2006/chart=c, http://schemas.openxmlformats.org/wordprocessingml/2006/main=w, http://schemas.microsoft.com/office/word/2006/wordml=wne, http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes=vt, http://schemas.openxmlformats.org/presentationml/2006/main=p, urn:schemas-microsoft-com:office:word=w10, urn:schemas-microsoft-com:vml=v, http://schemas.openxmlformats.org/drawingml/2006/main=a, http://schemas.openxmlformats.org/officeDocument/2006/math=m, http://schemas.openxmlformats.org/officeDocument/2006/relationships=r, urn:schemas-microsoft-com:office:excel=x, urn:schemas-microsoft-com:office:office=o, http://schemas.openxmlformats.org/markup-compatibility/2006=ve, http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing=wp}ENTITY_EXPANSION_LIMIT=1SAVE_AGGRESSIVE_NAMESPACES=nullSAVE_SYNTHETIC_DOCUMENT_ELEMENT={http://schemas.openxmlformats.org/spreadsheetml/2006/main}worksheet再深入一點(diǎn),很明顯它在這種方法上失敗了:public void save(OutputStream os, XmlOptions options) throws IOException { XmlCursor cur = newCursorForce(); try { cur.save(os, makeInnerOptions(options)); } finally { cur.dispose(); } }在XmlObjectBase,特別是在newCursorForce()。這種方法在所有其他機(jī)器上以及在調(diào)試模式下的機(jī)器上失敗的原因是什么?如果正常執(zhí)行,整個(gè)應(yīng)用程序運(yùn)行流暢。
1 回答

侃侃無極
TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
正如我在第二次編輯中已經(jīng)得出的結(jié)論,這確實(shí)是一個(gè)內(nèi)存問題。使用作為 VM 參數(shù)執(zhí)行應(yīng)用程序-Xms1G -Xmx4G
,應(yīng)用程序沒有引起任何問題,并且運(yùn)行時(shí)非常接近我在測(cè)試時(shí)得到的
添加回答
舉報(bào)
0/150
提交
取消