English 中文(简体)
大树:RIA中何时发布数据
原标题:
  • 时间:2008-11-12 22:06:09
  •  标签:

这个问题是关于Java JTree、Window .Net Tree (Winforms) 或Adobe Flex Tree的。

在客户端服务器应用程序中(对于Flex它是Web),我有一个具有分层数据的树(以Windows资源管理器类型界面为例)。现在当用户从服务器请求更多数据时,我会懒加载树。这很好,并且可以处理大约750K个节点(在.Net Winforms和Adobe Flex上进行实证测试),但是在那之后,执行速度会减慢。但是数据库增长很快(主要是因为用户可以粘贴大量节点),具有2000万个节点的数据库不太可能。

当一个分支被折叠时,我应该释放树上的数据,以便垃圾回收器可以释放内存吗?这没问题,但是如果用户不高效并且不折叠分支怎么办?我是否应该做一个内存管理模块,关闭那些长时间没有被使用的分支?

这似乎是为了避免内存耗尽而做的大量工作。

编辑:我应该发布节点崩溃的数据吗?如果是这样,什么时候发布?弱对象缓存的想法很好,但我应该继续填充UI直到它破裂吗(也许这不是一个坏主意)?

最佳回答

如果用户不折叠分支,那么我猜他们就必须要在750K到20M个节点之间滚动,对用户来说似乎相当低效。因此,这个问题可能会自我实现。

问题回答

在我看过的大多数框架中,树结构本身都是相当高效的,但如果每个叶子节点上都有一个复杂的对象,它会很快变得臃肿。

最简单的方法是不要在树叶上存储任何东西,而是在 render/draw/update/whatever 方法中,从弱引用缓存中选择您的对象。如果它不在那里,请从服务器加载。关键是不保留对对象的任何其他引用,只保留缓存中的弱引用。这样,它仍然可以使用,但在必要时会被释放。





相关问题
热门标签