不会.GC永远不会从缓存中删除任何对象。 Ehcache不使用任何弱或软引用。
你提到的句子只是声明在堆上缓存的条目是堆上的。所以它们将由GC维护。因此,如果你有一个大缓存,你有一个很大的堆,你需要相应地调整你的GC,以防止它减慢你的速度。此外,缓存条目往往属于旧一代。所以你可能需要一个高效的老一代GC。
堆外存储根本不会有这个问题。但是,添加和检索条目会慢一些,因为它们需要序列化。
GC不会收集活动对象,即对象 可以从实时线程访问 。堆上Ehcache存储中的对象是可访问的,因此不会收集它们。
Ehcache曾经试验过 WeakReference 但 根据这篇文章 这个想法被放弃了:
WeakReference
我认为这是一个很酷的主意。在生产中,我们的缓存最终看起来像瑞士奶酪,因为元素随机消失。我希望VM能够保留所有元素,并且在内存不足之前才开始丢弃。不是这样。大约8个月前它被删除了,虽然我今天在java doc中提到了一些参考文献。