说,我有很多读操作和一些写操作,并且将放置在地图中的对象非常“重” - 这种对象的初始化会花费很多内存/时间等。
我应该如何编写代码以利用concurrenthashmap的高性能并确保这些缓存对象的不必要初始化的最低成本。
示例代码段是受欢迎的,非常感谢! 谢谢!
答案 0 :(得分:2)
非常确定番石榴正是您想要的,请参阅MapMaker.makeComputingMap。
答案 1 :(得分:1)
ConcurrentHashMap中的代码经过高度优化 - 我只想使用它。
如果更新很少,并发开销很小。如果在读取期间发生写入操作,则在进行内部状态的临时副本时会产生一些开销,但是否则性能差异可以忽略不计。我将按原样使用提供的类,并且只有当您发现性能问题时,然后才会使用其他内容。
请注意,初始化开销与并发性能无关,只有将其添加到地图的操作才是。
答案 2 :(得分:0)
这取决于您的要求,但您可以考虑使用Pool
个实例来减少实例化计数。如果您当前正在从地图转储项目以进行垃圾收集,那么这将提高您的性能,因此您将它们放回池中并在以后重新使用它而不是GC。