gpt4 book ai didi

java - 咖啡因:如何得出合适的缓存大小

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:37:46 26 4
gpt4 key购买 nike

我有一个计算密集型的一次性离线处理任务,需要几个小时才能运行,我正在使用 Caffeine作为我的内存缓存。设置最大缓存大小的好的启发式方法是什么?我正在使用 8GB 的​​ RAM 运行我的 Java 程序,我愿意为缓存提供大约 4GB 的内存,但我不确定内存如何转换为我的缓存整体的实际大小。我决定使用 .softValues() 让 JVM 决定,但我在 Caffeine 的 JavaDoc 中遇到了以下单词:

Warning: in most circumstances it is better to set a per-cache maximum size instead of using soft references. You should only use this method if you are well familiar with the practical consequences of soft references.

最佳答案

软引用在概念上很有吸引力,但通常会损害长时间运行的 JVM 的性能。这是因为它们通过填充老年代产生堆压力并且只有 collected在完整的 GC 期间。这可能会导致 GC 抖动,每次释放足够的内存时,它很快就会被消耗掉,并且需要另一次完整的 GC。对于延迟敏感的应用程序,这会受到进一步影响,因为逐出是全局的,因为无法暗示哪些缓存是最关键的。

软引用不应该是默认的,去攻略吧。这可能是吞吐量、非面向用户的任务的合理简化。但是,当 GC 时间、延迟和可预测的性能很重要时,它可能会很危险。

遗憾的是,确定尺寸的最佳答案是猜测、测量和重复。导出统计数据,尝试设置并适当调整。可以通过捕获访问跟踪( key 哈希日志)和 simulating 来获得命中率曲线。它有不同的尺寸。它的数据很有趣,但通常进行一些简单的调整运行就足够了。

关于java - 咖啡因:如何得出合适的缓存大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39503105/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com