.NET开发过程中易被忽视的问题(3)

http://www.itjxue.com  2015-07-17 01:59  来源:未知  点击次数: 




    2.3 绝不建议在循环语句写如下的语句, 具体为什么,自己思考。
 

Foreach (DataRow row in tabl.select(“”,”ProductID”)
……………
Dim DS new Dataset 记住此乃写代码之大忌;
Dim DT new Databable….
………….
Next
还有一种写法
Dim DS new Dataset
Dim DT new Databable…
Foreach (DataRow row in tabl.select(“”,”ProductID”)
DS=GetDatase
DT=GetDatatable……………
.
………….
Next

正确的写法是:
Dim DS new Dataset
Dim DT new Databable…
Try
Foreach (DataRow row in tabl.select(“”,”ProductID”)
DS=nothing ‘每次使用,都先把内存空间释放出来
DT=nothing ‘每次使用,都先把内存空间释放出来
DS=GetDatase
DT=GetDatatable……………
.
………….
Next
Catch ex As Exception
Throw ex
Finally
DS.dispose
DT.dispose
End Try


    另外,提醒大家一点,记得用 For Each 语句替代For i=0 to Rowcount-1,这样的效率改善也是明显的。

    三、调试(Debug)模式下编译就用于应用环境中篇

大家看下面的图片:
 



    有人会留意这个界面吗?有,但一定不多。
    
    接着,程式开发好(也包括单元测试),然后编译直接分发到应用环境。

    整个过程就结束了。谁也不曾想,这里埋下了一个深深的地雷,据微软的人讲,这样分发的程式到应用环境,你有多少内存恐怕都不够。
    
    所以微软建议我们做如下的工作:


    如果不这样做会有什么事情发生? 我分享一个同事的感受给大家:


    后来的结果发现是内存使用率超高,到一定限度的时候,就会反应变慢,这个时候只要重启IIS就可以好一段时间。后来分析IIS用到实体加虚拟的内存超过2G就会爆掉。
    
    这就是原因,你想遇到吗?那就不妨试试。

(责任编辑:IT教学网)

更多

推荐ASP.NET教程文章