OpenDJ dbcache 实现 - 它位于 RAM 中的什么位置?

OpenDJ dbcache implementation - where is it located in RAM?

我试图了解 OpenDJ 如何与 java vm 一起处理 dbcache 的内存分配。不过,有几件事我无法完全理解。如前所述 here,可以仅出于缓存数据库的目的分配一些预定义数量的 RAM。它还在这里和那里提到,OpenDJ 可能 尝试在内存中存储尽可能多的 db 文件。到目前为止有 2 个问题:

  1. dbcache 实际上是堆的一部分吗?如果答案是"yes",那么 它的内存到底在哪里分配?即,它是旧的吗 一代 space、永久一代 space,甚至年轻一代 space?要么 可能它们都不是,而且在通常的堆中看不到 内存区域的(意味着它没有放在堆中,而是在它自己的 memory space 其大小只是从堆的大小中得出 使用本文提到的设置)?
  2. 我能以某种方式确保(即在 OpenDJ),我的完整数据库在服务启动期间被缓存, 并确保否则(即如果分配的 RAM 大小设置不正确, 或者没有足够的 RAM)服务根本无法启动?

感谢任何帮助。

有趣的是你指的是我的博客... 1/ 是的,dbcache 是 JVM 堆的一部分。 OpenDJ 让 JVM 决定在哪里分配 dbcache。一般分配在New Generation space,但是如果分配的数量超过New Gen的大小,就会分配在Old Generation space.

2/ OpenDJ 有一个选项可以指定服务器是否应该预加载缓存以及尝试预加载它应该花费的最长时间。请查看 OpenDJ 管理指南和性能调整部分了解详细信息。

如果没有缓存整个数据库,则无法阻止服务器启动。我想不出这种特定行为的有效用例。