On 10/27/2014 3:43 PM, Mohan Nuggehally wrote:
Mark,

Thanks for the response.

I have a loop going over rows and columns where in I do "XSSFRow row =
sheet.createRow(row_i)"  and "XSSFCell cell = row.createCell(column_j)". I
am under the impression that the "row" and "cell" objects are destroyed
automatically once it comes out the scope of the loop. Am I
misunderstanding something ? Do I need to explicitly destroy them ? If so
how ?

They will be destroyed once you're out of the loop, but inside the loop they will accrue with every iteration. Try setting each object equal to null at the very end of the loop, before it loops back to the top.



Regards,
-Mohan

On Mon, Oct 27, 2014 at 3:27 PM, MARK GOLDEN <[email protected]>
wrote:

Hi Mohan,

Are you cleaning up unwanted objects?

The JVM will simply expand, surprising quickly, if you do not 'Destroy'
objects you no longer need.

Regards,
Mark.


________________________________
  From: Mohan Nuggehally <[email protected]>
To: [email protected]
Sent: Monday, 27 October 2014, 19:14
Subject: out of memory and GC overhead limit error


I get this error when I try to create an excel sheet using xssf. All I am
doing is creating rows and columns by reading contents from a file. Of
course when I change the max heap size from 1GB to 6GB it works. I wonder
if 1GB is really too small or is the code bad and therefore requires a huge
heap. Any experiences ? Here is the error stack.
-------------
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
     at

org.apache.poi.ss.util.CellReference.convertNumToColString(CellReference.java:433)
     at

org.apache.poi.ss.util.CellReference.appendCellReference(CellReference.java:492)
     at
org.apache.poi.ss.util.CellReference.formatAsString(CellReference.java:455)
     at org.apache.poi.xssf.usermodel.XSSFCell.setCellNum(XSSFCell.java:710)
     at org.apache.poi.xssf.usermodel.XSSFRow.createCell(XSSFRow.java:175)
     at org.apache.poi.xssf.usermodel.XSSFRow.createCell(XSSFRow.java:147)
     at org.apache.poi.xssf.usermodel.XSSFRow.createCell(XSSFRow.java:39)
     at
GraphWriteFull_to_Excel.create_sheet(GraphWriteFull_to_Excel.java:150)
     at GraphWriteFull_to_Excel.main(GraphWriteFull_to_Excel.java:79)
----------------
The error stack is different as below when I set the max heap size to 4GB
--------------
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit
exceeded
     at java.util.Arrays.copyOfRange(Arrays.java:2694)
     at java.lang.String.<init>(String.java:203)
     at java.lang.String.copyValueOf(String.java:2908)
     at java.io.StreamTokenizer.nextToken(StreamTokenizer.java:702)
     at
GraphWriteFull_to_Excel.create_sheet(GraphWriteFull_to_Excel.java:151)
     at GraphWriteFull_to_Excel.main(GraphWriteFull_to_Excel.java:79)
---------------
I appreciate any feedback.

Regards,
-Mohan

--
Mohan Nuggehally
Senior Developer, Es-ice
Office: Direct dial: 1-631-760-3244
            Internal extension: 25172
New York






---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to