随笔 - 547  文章 - 213 评论 - 417 阅读 - 107万

 

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

 

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   今夜太冷  阅读(349)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示