操作活动目录的程序如何释放非托管资源?
在sharepoint的Layouts目录下做了一个操作活动目录的程序,要经常操作活动目录中所有的用户信息,现在我发现程序每运行一段时间就就会出现"该服务器无法操作"的操作
这时重新启动应用程序服务器(而不是域服务器)程序就可以正常运行了
隔一段时间又会出现这个问题.
我想可能是占用的非托管资源没有释放的原因.
我使用的每个DirectoryEntry都及时关闭了,为什么还是无法释放资源
现在我不想总是重新启动机器了,有没有什么方法可以在不启动机器的情况下释放所有.net占用的非托管资源?
[解决方法]
可以不重启机器直接释放非托管资源,方法是在任务管理器的进程管理中
1.默认只有几个进程,看不到sharepoint的进程。
2.选中checkbox “显示所有用户的进程”。发现有更多的进程出现。
3.在其中找到一个名字叫做w3wp.exe的进程,果然占用很大的内存
4.运行那个操作活动目录的程序,在加载活动目录的数据的时候,内存上升了100多k.
5. 所有为了避免再出现开头所述的错误,就可以在这个进程占用的内存比较大的时候结束这个进程就可以了,不必担心其他问题,因为这个进程在用户再次运行的时候会再次出现。只是不要在用户执行请求的那一个瞬间结束就可以了。
6.为什么偏偏选择这个进程那?
因为我在程序中用了身份模拟shareadmin,所有这个进程应该就是我程序的进程。
还有一个NETWORK SERVICE运行的w3wp进程,只占用几十k内存,而且变化很小,可能是sharepoint自身的程序用的)
[下面的重点是研究如何释放操作活动目录的时候占用的非托管资源]
1. 从任务管理器的监视来看,在程序刚刚加载的时候,内存变化最大,而在其他页面行为时,内存变化很小。可以推测出遍历活动目录的时候占用了大量的非托管资源没有释放
2.遍历活动目录的时候用到了一个又一个的DirectoryEntry.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架