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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jopendocument/a7430116-12fd-4907-a2b4-b5c6fa8d4766%40googlegroups.com.

Reply via email to