有个winform程序,运行时间一长内存就会升高很多,用了dispose,CLR自动回收也没效果,想在每天的某个时间让程序自动重启或者调用gc.collect()?请问调用gc.collect()和重启应用程序的效果是不是一样的。如果一样直接写gc.collect()就方便多了。
还有请问强制对所有代进行垃圾回收,代是什么意思?如果假设我程序里正在向数据库插入
ds.tables[0].ros[i]["id"].toString(),
ds.tables[0].ros[i]["name"].toString(),
.............
如果正插入过程中执行了gc.collect(),那么ds里面不会被清空吧?
还有请问强制对所有代进行垃圾回收,代是什么意思?如果假设我程序里正在向数据库插入
ds.tables[0].ros[i]["id"].toString(),
ds.tables[0].ros[i]["name"].toString(),
.............
如果正插入过程中执行了gc.collect(),那么ds里面不会被清空吧?
GC执行垃圾回收之后,堆上将出现多个被收集对象的“空洞”,为避免托管堆中的碎步。会重新分配内存,压缩托管堆。在这个过程中肯定会影响GC回收的系统性能。