title: Guava MapMaker().weakKeys().makeMap() vs WeakHashMap
body: <p>We have a Scala server that is getting a node tree using Protocol Buffers over a socket and we need to attach additional data to each node.</p>
  
  <p>In a single threaded context and when both the node tree and the associated data will have their strong references removed at the same time (due to going out of scope), is there any reason to use Google Guava's MapMaker with weakKeys() over using WeakHashMap?  It seems that with MapMaker, one pays for synchronized access, which isn't needed in this case.</p>
  
  <p>As an aside, it would be useful if MapMaker were to give access to the equivalence settings so one could choose reference equality but not care about weak or soft references.</p>