CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

数据库 | Oracle | DB2 | SQL Server | MySQL | 商业智能 | BI | DBA | Sybase| SQL Server 2008

使用CLR会造成内存方面的问题吗

作者: Peak Wong,  出处:IT专家网, 责任编辑: 李书琴, 
2008-01-23 12:45
  

  【IT专家网独家】我老是担心使用CLR会造成内存方面的问题,比如内存不能回收。其实想一想也许我过滤了,毕竟.NET Framework能够自己回收托管内存。既然在应用服务器上能使用,数据库上似乎也可以使用。

  希望听一听大家的经验和见解~~

  Peak Wong:

  一般不用, 主要是DBA管理这种东西的时候会很麻烦, 因为自己写的CLR很难保证没有BUG, 一旦出BUG, 如果只是影响调用那一部分还好, 如果导致整个服务挂掉, 则很危险了(而且往往导致服务器挂掉还不一定查得出来是否CLR的问题)

  另外, 部署和迁移也是要考虑的问题之一。还有感觉 CLR 还没有想像中的那么稳定(或者是与 SQL SERVER 的配合没有想像中的好)

  例如在处理 复制出错的时候, 有时会调用一些存储过程去查看出错相关的信息, 这些存储过程中的一部分就是 CLR 存储过程, 经常会发现怎么也调不成功, 说什么内存错误什么的, 但实际上空闲内存肯定是够的.

  而且一般第一次调用CLR的时候, 加载程序集花费的时间也不短, 所以如果 CLR 用得多, 内存又不太够, 导致一些CLR程序集老是反复加载的话, 性能会非常低。

  内存回收机制确实很智能,只不过只需要把比如打开文件啊,开数据库啊什么的关闭就可以了。就不会造成多余的系统开销。如果害怕的话,可以写段折构函数!以前学习的时候写过一个例子,但是用处不打,可以借鉴一下。

  C# code

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅


    
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2007, ChinaByte
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i