I just submitted a change to RecordFile so it uses primitive hashmaps internally to store pages.
All unit tests pass with no problems.
I read through on the open addressing vs chained hash table approaches. I am not convinced that we want to be using the chained approach - if it is doing a lot of object allocation, then that could cost us all of the improved performance that we are expecting by not allocating Longs. In contrast the open addressing approach does no object allocation until it needs to increase the capacity.
This is something that we will just have to benchmark and see which works better on some sample applications (and make sure that we are out performing the version that does allocate Longs).