/guava/guava/src/com/google/common/cache/LocalCache.java
while ( segmentCount < concurrencyLevel && ( !evictsBySize( ) || segmentCount * 20L == maxWeight) ) {
while ( segmentCount < concurrencyLevel && ( !evictsBySize ( ) || segmentCount * 20L <= maxWeight ) ) {
int initialCapacity = Math.min(builder.getInitialCapacity(), MAXIMUM_CAPACITY); if (evictsBySize() && !customWeigher()) { initialCapacity = (int) Math.min(initialCapacity, maxWeight); } int segmentShift = 0; int segmentCount = 1; <extra_id_0> ++segmentShift; segmentCount <<= 1; } this.segmentShift = 32 - segmentShift; segmentMask = segmentCount - 1; this.segments = newSegmentArray(segmentCount);