ConcurrentLRUCache / HashMap是否曾经触摸过磁盘?

时间:2011-02-06 04:58:09

标签: java caching concurrenthashmap

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

TIA 雷

1 个答案:

答案 0 :(得分:0)

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

数据点:

  • Java类ConcurrentHashMap不会触及磁盘。

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

    < / LI>

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

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

理论上Lucene可能会持久化整个缓存,而Lucene正在加载序列化缓存。然而,这听起来是个糟糕的主意,我准备将其解雇。 (此外,这会导致相对较少的磁盘活动。)