相关疑难解决方法(0)

17
推荐指数
3
解决办法
9404
查看次数

如何在德尔福开始构建可搜索的垃圾收集器(2009-2010)

我正在寻找一种方法来控制我在用Delphi编写的应用程序中创建的所有业务对象.

正如关于Embarcadero的EDN(http://edn.embarcadero.com/article/28217)的文章所述,基本上有三种方法可以做到这一点.我最感兴趣的是使用接口的最后一个.这样,当业务对象不再被应用程序中的任何地方引用时,它将被处理内存(稍后我将回到这一部分).

在创建新的业务对象时,最好先询问新的对象管理器是否已在程序中先前获取它,从而避免需要从数据库中重新获取它.我已经将内存中的业务对象,所以为什么不使用那个呢?因此,我需要内存中可用对象的列表可以搜索(快速).

提供的代码使用"TObject数组"来存储收集的对象,一旦达到一定数量,这对于搜索对象列表不会非常有效.我必须将其更改为TObjectList或某种二进制可搜索树.这里最好的选择是什么?我已经在http://www.ibrtses.com/delphi/binarytree.html找到了一些有用的代码(我认为).JCL在二叉树上没有东西吗?

我该如何处理该树中的"业务对象"和"业务对象列表"?作为列表一部分的业务对象是否会在树中引用两次?

关于处理对象:我还想为该业务对象设置某种TTL(生存时间),在一定时间后强制重新获取.如果引用计数器降到0,我仍然希望将对象保留一段时间,如果程序仍然需要它在TTL内.这意味着我需要排序一些线程监视器来循环对象列表(或树)以监视要删除的对象.

我还遇到了Boehm垃圾收集器DLL(http://codecentral.embarcadero.com/Download.aspx?id=21646).

简而言之,将我的"对象管理器"作为EDN文章中提供的源代码的基础是明智的吗?我想要将对象存储在哪种列表中?我该如何处理列表中的对象列表?我是否应该将我的对象保留在内存中一段时间​​并通过线程监视器进行处理?

我的推理是否正确?在开始编码之前有任何建议,想法或评论吗?也许一些新想法融入我的代码?

顺便说一下,一旦有些聪明的头脑想出来,我会很乐意分享结果,让别人受益.

日Thnx.

delphi garbage-collection delphi-2009 delphi-2010

6
推荐指数
1
解决办法
992
查看次数