[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
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