On 08.02.10 16:42, Ronald Rudy wrote:
Kristian,

Yes, I actually do have a heap dump just like you mentioned - sorry I had 
completely forgotten I retrieved one earlier (it was done so late last evening 
and I am still getting my bearings this morning :))

Here is the top 17 or so from the histogram: (view the email w/ fixed width and 
it should be ok)

Class                                            Instance Count    Total Size
[C                                                      1596861    307166530
[B                                                        10719    69009057
org.apache.derby.iapi.types.SQLVarchar                  1391370    38958360
java.lang.String                                        1397786    22364576
[[C                                                     1392460    16709932
[Lorg.apache.derby.iapi.types.DataValueDescriptor;       200932    8796896
org.apache.derby.impl.store.access.sort.Node             198342    5553576
org.apache.derby.iapi.types.SQLInteger                   398201    1991005
org.apache.derby.impl.store.raw.data.StoredRecordHeader   93119    1583023
[Lorg.apache.derby.impl.store.access.sort.Node;               9    1049092
org.apache.derby.impl.store.raw.data.RecordId             48191    578292
[Ljava.util.concurrent.ConcurrentHashMap$HashEntry;         192    425876
[Lorg.apache.derby.impl.store.raw.data.StoredRecordHeader; 2000    404880
org.apache.derby.impl.store.raw.data.StoredPage            2000    352000
[Ljava.util.HashMap$Entry;                                  837    303432
[I                                                         4839    286212
java.lang.Class                                            2584    196384

It looks like it's keeping a ton of SQLVarchar's in memory..

Thanks, Ron.

Indeed... If I wanted to get this fixed, I would have done one or both of these:
 a) Check if the same problem exist in 10.5.
b) Write a runnable repro executing the problematic query (the data should preferably be generated by the repro), attach it to a Jira [1].

Maybe one could learn something by using jhat or similar (i.e. why is Derby holding on to all the SQLVarchar objects), but having a repro would help a lot... Further, it is not unlikely that many of the Strings and the character arrays belong to the SQLVarchar objects...


Regards,
--
Kristian

[1] https://issues.apache.org/jira/browse/DERBY

-Ron



On Feb 8, 2010, at 9:48:52 AM, Kristian Waagan wrote:
Hi Ronald,

If you can easily control this process, can you run it with 
-XX:+HeapDumpOnOutOfMemoryError and post a heap dump summary?
(I don't remember off the top of my head how you extract a histogram from the 
binary heap dump, but I guess maybe using jmap or HeapViewer)
Are there many Derby classes in the top 10?
You might only see a bunch of arrays up there, in which case more investigation 
may be required to understand what's going on.


Regards,
--
Kristian

Reply via email to