ASP.NET开发网站程序常见错误汇总(3)
http://www.itjxue.com 2015-07-17 01:58 来源:未知 点击次数:
二、对象只管创建应用,不管释放篇
我们继续用[Sample-01]的代码,我们现在看0004行的代码:
谁会发现它被释放,你不能,我也不能,从来没有被释放过。
"0004"行的代码解释是,要在内存划分一个空间给这个定义的对象dtresult; 系统要划分多大的空间呢?呀,我没有研究过(留给那些有心人吧,呵呵..)。但有一点,要在内存划分一个空间,就是要占用内存。那么内存有多大呢,不是无限大吧,也是有限的,所有运行上述代码的最终结果是,系统的执行效率越来越慢,有人就怀疑,我有内存1到2G的,加上虚拟内存就更大,我只能说你的怀疑没错。可是你的应用程序就用这么一只函数吗?我想肯定不是,所以上百只函数的应用执行对内存的消耗可想而知。如果是后台自动运行的程序,及时是一个function,也会让系统崩溃。这只是一个简单的例子,有更复杂的。像这样的对象应用还有:Dataset, Datatable,DataReader,DataAdapter,Datagrid..等。
那么怎么解决这些问题呢:
2.1在Try catch 语句前定义好所用的对象,如:
2.2释放的语句如下
这不是也释放了吗?我想问的是,如果程序出现异常,它们会释放吗 ?我肯定得告诉大家,它们一定不能释放,为了确保程序的稳定运行,我建议大家都来用Try Catch语句。