Hello.
I have been using jOpenDocument for some time now, and it behaves in a way that I do not understand.
I have a SpreadSheet with only one non-empty Sheet containing 57495 rows and 476 columns.
Around 80% of the cells are blank, and with no style.
The rest have a small String of 1 to 15 char max.
I have defined 3 custom styles which are used on some of the cells.
This SpreadSheet takes up 2.2MegaBytes on the disk.
I perform the following code on it:
File file = new File("fileName.ods");
Sheet sheet =
SpreadSheet.createFromFile(file).getSheet(0);
int
rowCount = sheet.getRowCount();
int columnCount
= sheet.getColumnCount();
for (int y = 0; y <
rowCount; y++)
{
System.out.println(y);
for
(int x = 0; x < columnCount; x++)
{
sheet.getCellAt(x, y);
}
}
Now from what I would expect, this code shouldn't really be doing anything at all.
However, it keeps creating a bunch of MutableCell which are never unloaded.
After about 2 minutes, the heap is taking up 4.8GigaBytes of the 6GigaBytes I have allocated it, 4.3GigaBytes of which is actually used.
The program has created about 23 million MutableCell, and about as much Element, Attribute[], AttributeList and ContentList.
It has now reached row 48000.
From then on it slows down significantly, progressing at about 1 row every 5 minutes. GC and CPU usage are both at about 0%.
After about an hour it produces an OutOfMemoryError : Java heap space, even though it has still not reached the 6GigaByte limit.
Could someone please explain this behavior? It seems that any call I make to the getCellAt() method makes the memory consumption explode.
Because of this, I cannot use methods like getCellAt().setStyleName() or getCellAt().merge() in big files, which is a real problem for me.
There is something I don't understand about the getCellAt() method. How would I go about setting the style of a cell, or merging cells in a big file?
Thank you for taking the time to read me.
--
---
You received this message because you are subscribed to the Google Groups "jOpenDocument" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jopendocumen...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jopendocument/a7430116-12fd-4907-a2b4-b5c6fa8d4766%40googlegroups.com.