我有一个部署在生产环境中的应用程序,有时它会开始消耗大量 RAM。为了能够分析并弄清楚为什么内存在某一点上消耗如此之多,我想我会为此使用 dotMemory CLI 分析工具。
我将 dotMemory 附加到该进程,然后使用##dotMemory["get-snapshot", {pid:12345}]
.
但是,当应用程序(在本例中为 .NET 4.5 中的 Web API)从 1.7GB(标准)上升到 2.5GB 或更多时,一旦我执行get-snapshot
,dotMemory 似乎会强制进行垃圾收集,最终将占用的内存清除回约 1.7GB。考虑到它通常不会在不重新启动的情况下关闭的事实,dotMemory 并不是很有帮助,因为我得到的快照是在垃圾收集之后,这意味着我无法弄清楚是什么占用了这么多 RAM。
有没有我可以使用的这个或其他工具的解决方法?