2015-04-29 169 views
0

我有一个在vb.net内建立的三叉树结构。 每个节点都创建为具有某些属性的对象。 这些节点存储在ArrayList中。 这些ArrayLists然后存储在另一个ArrayList中,该ArrayList将是树。存储树数据结构

当我运行4000个步骤(即我的树中有4000个ArrayLists)时,最终的ArrayList将有8001个节点。对象的总数约为8000 * 4000/3 =约1000万个节点。

这是由于内存溢出导致程序崩溃。

什么是最好的方法来存储我的树,使它可以做得像我想的那么大?数据库或文本文件是前进的方向吗?

回答

0

一个解决办法是如下压缩树:

地图每个对象一个唯一的ID,然后只存储在的ArrayList的ID。每个对象的特定属性可以存储在数据库中。只要需要访问特定对象的属性,就可以查询数据库。

如果经常访问对象实例,您也可以使用某种缓存方案来将这些对象的属性存储在内存中。

编辑:如果ArrayList的ID也开始超过内存,那么你也可以尝试为ArrayLists分配ID并将这些ArrayLists的内容存储在数据库中。总之,使用某种压缩机制(以减少内存消耗)并将其与一个良好的缓存机制(以减少磁盘访问次数)耦合。

+0

谢谢vm ..我会放弃一下。 – NK2013