SQL CLR AppDomain数据缓存&记忆释放

时间:2012-05-10 17:49:37

标签: .net sql clr sqlclr

由于性能原因,我编写了一个C#.Net独立DLL,用于加密SQL 2008 R2表(在64位平台上运行)上的数据。这可能会占用大量内存,因为可能会有很多行需要通过。

我已经将它与SQL CLR集成为一个程序集/函数,一切正常。

此程序集使用Permission_Set'UNSAFE'运行,但作为托管程序集运行(由sys.dm_clr_loaded_assemblies报告)。

我通过MS Process Explorer密切关注内存使用情况,并且每次调用该函数时内存使用量都在增加,但它没有被释放。

通过阅读MSDN文档,AppDomain可以缓存从函数返回的数据,以提高效率。如果我卸载程序集,内存就会被释放。

我有几个问题:

  1. 有没有任何方法可以在不卸载的情况下“刷新”AppDomain?
  2. 来自标记为'Dispose'的DLL中的所有对象是否会被GC清除?
  3. 是否(这显然与以上内容有关!)GC还包括SQL Server进程空间?
  4. 我非常感谢上面的一些帮助,因为在线文档在SQL CLR和内存等方面并不是很清楚。

    谢谢:)

0 个答案:

没有答案