0

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

蒂亚雷内

4

1 回答 1

0

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

数据点:

  • Java 类ConcurrentHashMap不接触磁盘。

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

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

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

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

于 2011-02-06T05:03:23.453 回答