Bug 36900


GemStone/S 64 Bit,,,,,, 3.1, 3.0.1, 3.0, 2.4.8, 2.4.7, 2.4.6,, 2.4.5,,,,,,, 2.4.4, 2.4.3, 2.4.2, 2.4.1, 2.4,, 2.3.1, 2.3,,,,, 2.2.5, 2.2.x, 2.2, 2.1.4, 2.1.x, 2.1, 2.0.4, 2.0.3, 2.0.x, 1.2.4, 1.2.x, 1.1.x, 1.x


Very large hashed dictionary out of memory on rebuildTable:

If a very large hashed dictionary (such as a KeyValueDictionary) grows
larger, such that a rebuildTable: is required, it may not be possible to
do the rebuildTable: without an out of memory error, even with maximum
TOC, since the entire collection may not be able to fit in memory.


Reset the collisionLimit of the collection to a much larger value than
the table size.  The rebuildTable: optimizes performance by reducing the
number of collisions in table lookup, it is not required for correct behavior.

rebuildTable: is called when at:put: is invoked and the collection has
too many collisions, so for large collections, you should manually control
collection size rather than allowing the automatic growth.  Set the collection
size larger than you expect to ever need it, and size the collisionLimit
much larger than the collection size to avoid rebuild.

If you need a larger table size when the collection is larger than will
fit into memory, you will need to create a new, properly sized dictionary
and add the elements to it, with interim commits.

Last updated: 2/22/08