Pau*_*ora 6 java caching garbage-collection soft-references
根据番石榴的文档MapMaker.softValues()
:
警告:在大多数情况下,最好设置每缓存最大大小而不是使用软引用.如果您熟悉软引用的实际后果,则应该只使用此方法.
我对软引用有一个中间的理解 - 它们的行为,用途以及它们与垃圾收集的契约.但是我想知道这些实际后果是由博士提到的.为什么使用最大尺寸而不是软参考更好?在实现缓存方面,软引用的算法和行为是否使得它们的使用比硬编码上限更有效?
我认为他们也暗示的是,如果您使用软引用映射,您应该为最大内存使用量以及可能更多的 gc 活动做好准备,因为引用仅在内存需要释放时才被 gc 处理。
如果您知道只需要缓存中的最后 n 个值,那么使用 LRU 缓存是一种更精简的方法,可以为正在运行的应用程序提供更可预测的资源使用情况。
此外,根据this,服务器和客户端 JVM 之间的行为似乎存在细微差别。
Sun JRE 确实以不同于弱引用的方式对待软引用。如果可用内存没有压力,我们会尝试保留 SoftReference 引用的对象。一个细节:“-client”和“-server”JRE 的策略是不同的:-client JRE 尝试通过清除软引用而不是扩展堆来保持较小的占用空间,而 -server JRE 则尝试保持较小的占用空间通过扩展堆(如果可能)而不是清除软引用来提高性能。一种尺寸并不适合所有情况。
归档时间: |
|
查看次数: |
775 次 |
最近记录: |