ConcurrentHashMap chm= new ConcurrentHashMap(8,1,16);
现在根据上面的配置,ConcurrentHashMap将表格分成16个段。现在每个段都是一个单独的hasmap。我们将入口对象大小作为x字节。那么分配给每个段的内存是多少。根据我的理解,只应将8x字节分配给表,然后如何将其分成16个段。因为这里的并发级别是16,表的大小是8. 8x / 16是0.5x,这不足以添加单个条目。
答案 0 :(得分:1)
从源代码中,免费提供并随JDK一起提供:
if (initialCapacity < concurrencyLevel) // Use at least as many bins
initialCapacity = concurrencyLevel; // as estimated threads
所以,简而言之,如果你传递的论点不合理,那就为你解决了。