可以/我应该在db4o的复杂对象结构中使用WeakReference吗?

时间:2009-12-16 08:28:56

标签: java db4o weak-references

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

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

对于文本blob(应该在1-10KB左右)也是如此。是否有可能获得一个字符串,而不必担心数据库层,并且不必使用getter中的人工ID查询文本blob,也不使用硬件引用将整个文本始终保存在内存中?

2 个答案:

答案 0 :(得分:1)

关闭WeakReferences主要用于性能tuning。这种方法的缺点是不可忽视的 - 所以要小心。我不推荐它。

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

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

戈兰

答案 1 :(得分:0)

我最近没有使用过db40或任何ORM / OODB产品,但是这种内存管理会让我感到震惊。图形管理功能应该是框架本身的一部分,而不是您构建的基础。如果Versant的db40没有提供这个,那么可能值得你研究另一种产品,而不是提供它。所以,我没有意识到你想要的答案,但利用这个框架将是我的第一个停靠点。

相关问题