写了一个window服务,循环更新sqlite记录,内存一点点稳步增长。三天后,内存溢出。于是,我从自己的代码入手,查找到底哪儿占用内存释放不掉,最终明确是调用servicestack.ormlite更新sqlite数据库造成的。至于是不是框架问题,可能性不大,因为本地模拟执行的代码没有任何问题。我觉得应该是orm在执行数据库更新后,对象还在被引用造成的。这里,我贴出一个伪代码:
//存放对象的一个列表
static List<Record> data=new List<Record>(5000);
while(true){
var models = ReadDB(5000);
data.AddRange(models);
//更新model对象的字段
Dbhelp.UpdateAll(models);
data.Clear();
}