操作活动目录的程序如何释放非托管资源?

 

sharepointLayouts目录下做了一个操作活动目录的程序,要经常操作活动目录中所有的用户信息,现在我发现程序每运行一段时间就就会出现"该服务器无法操作"的操作

这时重新启动应用程序服务器(而不是域服务器)程序就可以正常运行了

隔一段时间又会出现这个问题.

 

我想可能是占用的非托管资源没有释放的原因.

我使用的每个DirectoryEntry都及时关闭了,为什么还是无法释放资源

 

现在我不想总是重新启动机器了,有没有什么方法可以在不启动机器的情况下释放所有.net占用的非托管资源?

 

[解决方法]

 

可以不重启机器直接释放非托管资源,方法是在任务管理器的进程管理中

1.默认只有几个进程,看不到sharepoint的进程。

 

2.选中checkbox “显示所有用户的进程。发现有更多的进程出现。

 

3.在其中找到一个名字叫做w3wp.exe的进程,果然占用很大的内存

 

 

4.运行那个操作活动目录的程序,在加载活动目录的数据的时候,内存上升了100k.

 

 

5. 所有为了避免再出现开头所述的错误,就可以在这个进程占用的内存比较大的时候结束这个进程就可以了,不必担心其他问题,因为这个进程在用户再次运行的时候会再次出现。只是不要在用户执行请求的那一个瞬间结束就可以了。

 

6.为什么偏偏选择这个进程那?

 

因为我在程序中用了身份模拟shareadmin,所有这个进程应该就是我程序的进程。

 

还有一个NETWORK SERVICE运行的w3wp进程,只占用几十k内存,而且变化很小,可能是sharepoint自身的程序用的)

 

[下面的重点是研究如何释放操作活动目录的时候占用的非托管资源]

1.  从任务管理器的监视来看,在程序刚刚加载的时候,内存变化最大,而在其他页面行为时,内存变化很小。可以推测出遍历活动目录的时候占用了大量的非托管资源没有释放

2.遍历活动目录的时候用到了一个又一个的DirectoryEntry.

posted on 2005-11-10 17:49  今夜太冷  阅读(361)  评论(0)    收藏  举报