我有一大批类似树形结构的对象。我遇到一个问题,应用程序使用的内存量开始接近1GB,这意味着机器性能下降,并且会出现内存不足的错误指令。
我通过使用SQLite将对象放入表中来解决此问题,从而有效地管理数据,但由于某些原因,这不再是一种可行的解决方案(我在这里不详细说明)。
您有什么建议来解决这种情况吗?我没有(真正的)数据库可供使用,所以我考虑的解决方案是模仿SQLite过程并使用一些文件后端存储——是否已经存在纯Dot Net或者这是一个复杂的DIY情况?
我有一大批类似树形结构的对象。我遇到一个问题,应用程序使用的内存量开始接近1GB,这意味着机器性能下降,并且会出现内存不足的错误指令。
我通过使用SQLite将对象放入表中来解决此问题,从而有效地管理数据,但由于某些原因,这不再是一种可行的解决方案(我在这里不详细说明)。
您有什么建议来解决这种情况吗?我没有(真正的)数据库可供使用,所以我考虑的解决方案是模仿SQLite过程并使用一些文件后端存储——是否已经存在纯Dot Net或者这是一个复杂的DIY情况?
一开始就有几个显而易见的问题: 1. 为什么需要一次性存储如此大的树结构? 2. 这些数据最初来自哪里?
无论您对这些问题有何答案,都有可能不需要一次性将所有数据存储在内存中。将更大量的数据持久化到磁盘上,并仅在需要时读取所需的位。看起来这正是您要走的方向。除了 RDMS 外,在 .NET 中有许多可能存储数据的地方;平面文件、xml 文件、隔离存储等。或者也许您可以让提供这些数据的系统(问题 #2)每次只提供较小的数据块? 如果您绝对需要将大型树结构存储在内存中,请研究一些树结构算法,或者甚至数据压缩?