private final void initialize( int initial_sz ) {
    RangeUtil.checkPositiveOrZero(initial_sz, "initial_sz");
    int i;                      // Convert to next largest power-of-2
    if( initial_sz > 1024*1024 ) initial_sz = 1024*1024;
    for( i=MIN_SIZE_LOG; (1<<i) < (initial_sz<<2); i++ ) ;
    // Double size for K,V pairs, add 1 for CHM and 1 for hashes
    _kvs = new Object[((1<<i)<<1)+2];
    _kvs[0] = new CHM(new ConcurrentAutoTable()); // CHM in slot 0
    _kvs[1] = new int[1<<i];          // Matching hash entries
    _last_resize_milli = System.currentTimeMillis();
  }
Create a new NonBlockingHashMap with initial room for the given number of
 elements, thus avoiding internal resizing operations to reach an
 appropriate size.  Large numbers here when used with a small count of
 elements will sacrifice space for a small amount of time gained.  The
 initial size will be rounded up internally to the next larger power of 2.
jctools-core/src/main/java/org/jctools/maps/NonBlockingIdentityHashMap.java