Re: 2G unreachable objects when using xssf

2016-09-04 Thread Hongdi Ren
Hi all, We’re using poi & poi-ooxml 3.14 generating tens of thousands of rows to be downloaded. We have a problem that jvm keeps old gc 5 times/min but nothing could be collected. What’s more, when we looked into the jvmdump, it has 2G unreachable objects closed related with poi. We

Re: 2G unreachable objects when using xssf

2016-09-04 Thread Javen O'Neal
Without more detail, my guess would be that your JVM has 2GB of XML nodes. Nothing is flushed to disk with XSSF until you call Workbook.write, and nothing is cleared until Workbook.close. If you only need to create a workbook, the SXSSF streaming API is the way to go. On Sep 4, 2016 7:45 PM, "Hon

Re: 2G unreachable objects when using xssf

2016-09-04 Thread Hongdi Ren
Hi Javen, Per my understanding, before call Workbook.write, the XML nodes shouldn’t be unreachable, the workbook should have strong reference to the nodes. Is that right? Seems the attached picture isn’t working. Here’s our code. The output stream is from servlet response. The valueList(rows)

Re: 2G unreachable objects when using xssf

2016-09-04 Thread Javen O'Neal
Did you try os.close() and wb.close() after your flush? On Sep 4, 2016 20:50, "Hongdi Ren" wrote: > Hi Javen, > > Per my understanding, before call Workbook.write, the XML nodes shouldn’t > be unreachable, the workbook should have strong reference to the nodes. Is > that right? > > Seems the att

Re: 2G unreachable objects when using xssf

2016-09-04 Thread Javen O'Neal
By the way, if your production code really is as simple as the example you provided, the only change you need to make to get this to work for streaming is Workbook wb = new SXSSFWorkbook(1); Keep in mind that SXSSFWorkbooks don't use a shared string table--instead they embed the string literal as

Re: 2G unreachable objects when using xssf

2016-09-04 Thread Hongdi Ren
Thanks very much for the suggestions. I’ll try them On 9/5/16, 1:08 PM, "Javen O'Neal" wrote: By the way, if your production code really is as simple as the example you provided, the only change you need to make to get this to work for streaming is Workbook wb = new SXSSFWo