【问题标题】:ConcurrentHashMap memory allocationConcurrentHashMap 内存分配
【发布时间】:2014-12-13 09:41:08
【问题描述】:
ConcurrentHashMap chm= new ConcurrentHashMap(8,1,16);

现在根据上面的配置,ConcurrentHashMap 会将表分成 16 个段。现在每个段都是一个单独的 hasmap。让我们将条目对象大小设为 x 字节。那么分配给每个段的内存是多少。根据我的理解,应该只为表分配 8x 个字节,那么它将如何划分为 16 个段。因为这里的并发级别是16,表的大小是8。8x/16是0.5x,不足以添加一个条目。

【问题讨论】:

    标签: java java.util.concurrent concurrenthashmap


    【解决方案1】:

    来自源代码,随 JDK 一起免费提供:

    if (initialCapacity < concurrencyLevel)   // Use at least as many bins
        initialCapacity = concurrencyLevel;   // as estimated threads
    

    因此,简而言之,如果您传递的参数没有意义,它会为您解决问题。

    【讨论】:

    • 谢谢我也在寻找同样的东西。我从谷歌链接获得的代码不包含相同的所以有点困惑
    猜你喜欢
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多