question: FixedAllocator ( final RWStore store , final int size ) { m_diskAddr = 0 ; m_store = store ; m_size = size ; m_bitSize = calcBitSize ( true , size , cMinAllocation , cModAllocation ) ; allocBlockRange = 32 * m_bitSize ; final int numBlocks = 254 / ( m_bitSize + 1 ) ; m_allocBlocks = new ArrayList < AllocBlock > ( numBlocks ) ; for ( int i = 0 ; i < numBlocks ; i ++ ) { m_allocBlocks . add ( new AllocBlock ( 0 , m_bitSize , this ) ) ; } m_freeTransients = 0 ; m_freeBits = 32 * m_bitSize * numBlocks ; }
target:  Calculating the number of ints (m_bitSize) cannot rely on a power of 2.  Previously this assumption was sufficient to guarantee a rounding on to an 64k boundary.  However, now nints * 32 * 64 = 64K, so need multiple of 32 ints. <p> So, whatever multiple of 64, if we allocate a multiple of 32 ints we are guaranteed to be  on an 64K boundary. <p> This does mean that for the largest blocks of ~256K, we are allocating 256Mb of space