use guava cache to control heap usage