【问题标题】:Does ConcurrentLRUCache/HashMap ever touch disk?ConcurrentLRUCache/HashMap 是否曾经接触过磁盘?
【发布时间】:2025-11-23 01:25:02
【问题描述】:

在我预热缓存时有很多磁盘活动。我无法确定 org.apache.lucene ConcurrentLRUCache 是否正在执行此操作? (有问题的类使用 Java ConcurrentHashMap)。

tia 雷内

【问题讨论】:

  • 正在发布新问题。这个答案已经足够好了。

标签: java caching concurrenthashmap


【解决方案1】:

我想说最可能的原因是预热导致大量缓存未命中,这导致 Lucene 对其磁盘索引等进行大量查询。换句话说,您得到了您所要求的为。

数据点:

  • Java 类ConcurrentHashMap 不接触磁盘。

  • Lucene 类的源代码是here(例如),它没有引用任何可能明确导致磁盘活动的类...除了 sfl4j 日志记录。

“预热”期间磁盘活动的其他可能原因可能包括:

  • Java 类加载(但这主要发生在 缓存预热之前),或者
  • 由于物理内存不足导致虚拟内存抖动。

理论上有可能Lucene会持久化整个缓存,而Lucene正在加载序列化的缓存。然而,这听起来是一个可怕的想法,我已经准备好放弃它了。 (此外,这会导致相对少量的磁盘活动。)

【讨论】: