Hi, I'm the author of CLHM, brought to you by a friendly Google alert. :) If Cayenne is currently using Guava, then there won't be a dependency increase. I helped rearchitect MapMaker and design its replacement, CacheBuilder, which are based on CLHM's algorithms. This is a more feature-rich implementation with the support of a team at Google (whereas CLHM is my weekend project). We also fixed my mistake of only weighing by value, since I hadn't realized how popular memory-based weighing would be (I was trying to avoid unbounded collections as values).
Technically CLHM provides more concurrency than CacheBuilder by not relying on segment locks and later using a lock-free ring buffer. These will be an advantage when it is backed by JDK8's new CHM (see ConcurrentHashMapV8) or Cliff Click's NBHM. A JSR-166 implementation will be a marriage of CHMv8, CLHM, and CacheBuilder. CLHM is back-ported to JDK5 on every release, so you'll find the JDK5 source under /tags. I do development on /trunk assuming JDK6. Feel free to file issues against CLHM (or Guava) if you'd like enhancements to either. Both are used in large production environments. Cheers, Ben
