title: Java: multi-threaded maps: how do the implementations compare?
body: <p>I'm looking for a good hash map implementation. Specifically, one that's good for creating a large number of maps, most of them small. So memory is an issue. It should be thread-safe (though losing the odd put might be an OK compromise in return for better performance), and fast for both get and put. And I'd also like the moon on a stick, please, with a side-order of justice.</p>
  
  <p>The options I know are:</p>
  
  <ul>
  <li><p>HashMap. Disastrously un-thread safe.</p></li>
  <li><p>ConcurrentHashMap. My first choice, but this has a hefty memory footprint - about 2k per instance.</p></li>
  <li><p>Collections.sychronizedMap(HashMap). That's working OK for me, but I'm sure there must be faster alternatives.</p></li>
  <li><p>Trove or Colt - I think neither of these are thread-safe, but perhaps the code could be adapted to be thread safe.</p></li>
  </ul>
  
  <p>Any others? Any advice on what beats what when? Any really good new hash map algorithms that Java could use an implementation of?</p>
  
  <p>Thanks in advance for your input!</p>