0

我正在考虑将应用程序移植到 db4o。数据模型由许多相互之间有很多引用的小对象组成。例如,我有一本书指向作者和章节。章节有部分,部分有大量的文本、图像,并且它们引用了提到的字符。

我认为应该可以将元结构保留在内存中(除文本 blob 之外的所有内容),但我想知道是否可以使用一些涉及 WeakReference 的巧妙技巧,以便 db4o 将模型的一部分保留在我真正需要的内存中(即我最近一直在使用的)。

文本 blob 也是如此(应该在 1-10KB 左右)。是否可以在不必担心 DB 层的情况下获取字符串,并且不必使用 getter 内的人工 ID 查询文本 blob,并且无需使用始终将整个文本保存在内存中的硬引用?

4

2 回答 2

1

关闭 WeakReferences 主要用于性能调优。这种方法的缺点是不容忽视的——所以要小心。我不会推荐它。

应该使用激活功能来控制内存使用。激活可以帮助您仅将模型的一部分保留在内存中,而弱引用将帮助您 GC 不再使用的对象。我认为这是要走的路。

此外 - 您可以将您的问题发布到 db4o 论坛以从 db4o 社区获得帮助。

戈兰

于 2009-12-16T09:00:57.680 回答
0

我最近没有使用过 db40 或任何 ORM/OODB 产品,但是让我印象深刻的是,这种内存管理和图形管理功能应该是框架本身的一部分,而不是你在它之上构建的东西。如果 Versant 的 db40 不提供此功能,则可能值得您研究另一种提供此功能的产品。因此,我意识到不是您要寻找的答案,但利用该框架将是我的第一个停靠港。

于 2009-12-16T08:34:06.570 回答