Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[mat-dev] Huge heaps

I'm looking at bug 372548: ArrayIndexOutOfBoundsException with huge dump
https://bugs.eclipse.org/bugs/show_bug.cgi?id=372548

I'm working on a fix to one problem - the 1 to N indexes didn't cope with 
more than 2^31 outbound references in the whole snapshot. It used an int 
returned from the header index to index into the body index of all the 
outbound references. I hope to be able to commit a fix shortly.

What are the biggest heaps we need to deal with, in terms of objects or 
total outbound references?

What other restrictions are there for large dumps?
Do we need a LongIndex1N which can have more than 2^31 outbounds in total?
Do we need more than 2^31 objects? Currently object id < 2^31, i.e. signed 
int
We could defined object id as being unsigned. Possible problems include:
Identifier.reverse - a negative number is returned for not found
inbounds - where we temporarily encode some refs as negative
int SnapshotInfo.getNumberOfObjects()
int IClass.getNumberOfObjects()
int IClass.getObjectIds()
int [] Snapshot.getOutboundReferentIds()
SetInt can't hold enough ints
int [] Snapshot.getOutboundReferentIds(int[] objectIds, IProgressListener 
progressListener) - can't return more than 2^31 items
int [] Snapshot.getInboundReferentIds(int[] objectIds, IProgressListener 
progressListener) - can't return more than 2^31 items
Do we need to expose a IntIndexReader which can be indexed by unsigned int 
/ longs for > 2^31 entries?
Do we need to make the InboundWriter work with huge dumps. It splits the 
refs into separate log files, but can the contents of the log files get 
too big to sort as int arrays?
Can we save memory on building indices, doing the GC, rebuilding indices, 
calculating dominator tree?

Andrew Johnson






Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 
741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU








Back to the top