0

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

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

任何帮助表示赞赏。

4

1 回答 1

0

有趣的是,您指的是我的博客... 1/ 是的,dbcache 是 JVM 堆的一部分。OpenDJ 让 JVM 决定在哪里分配 dbcache。通常分配在新生代空间中,但如果分配的数量超过新生代的大小,则分配在老年代空间中。

2/ OpenDJ 有一个选项来指定服务器是否应该预加载缓存以及尝试预加载它应该花费的最长时间。请查看 OpenDJ 管理指南,并在 Tuning For Performance 部分了解详细信息。

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

于 2015-10-13T18:12:02.483 回答