哈希表中的保留大小及其互斥量

时间:2017-09-21 06:18:52

标签: java memory hashtable mutex

我使用了YourKit分析器,我试图分析为什么这个散列表和它的互斥锁保留高达196 KB;此处附有The图片。 是的,这是一个问题,因为我有大约2000个对象保留196 kb的数据;这是一个潜在的问题。 这是一个线程安全的环境;因此使用哈希表而不是其他任何东西。

1 个答案:

答案 0 :(得分:0)

  

如果我使用ConcurrentHashMap或任何其他数据结构,保留的大小会减少吗?

减少容量的最佳方法是明确设置初始容量(它是构造函数的参数)。

通常,最好使用ConcurrentHashMap,因为它使用剥离技术,然后比Hashtable更具性能。

在这种情况下,

互斥是你的Hashtable实例。这就是为什么你看到这个占用的大小,因为你看到一个对象两次。

Hashtable(与许多其他hashmap等一样)具有动态大小。 Hashtable.size - 是保留内部哈希表的实际大小,与Hashtable.count不同,后者是元素的数量。

唯一占据更大尺寸部分的地方是Hashtable本身,所以进入Hashtable.table并看看它是什么。