.net 使用NGEN时计算节省的工作空间
我目前正试图计算,在Citrix服务器场上运行时,NGEN是否会为我们的.NET客户端节省内存 我的主要参考资料如下:.net 使用NGEN时计算节省的工作空间,.net,memory,citrix,terminal-services,ngen,.net,Memory,Citrix,Terminal Services,Ngen,我目前正试图计算,在Citrix服务器场上运行时,NGEN是否会为我们的.NET客户端节省内存 我的主要参考资料如下: 这篇文章建议使用VMMap,我只需要检查一下我的可共享WS是否增加了,我是金黄色的 事实上,我确实看到可共享WS中增加了约56MB(请参阅pics前后)。但是我也注意到总的WS也跳了起来。也许是因为NGEN图像的增大 所以我认为我需要考虑到这一点,事实上我的处境更糟了 但我也明白,因为JIT没有发生,所以我在那里节省了一些空间。我相信JIT将显示在私有数据下 我计算如下:
- 56.3+(-58.3--6.8)=节省4.8MB(每个后续过程)
我不同意你的假设,即由于总WS从212上升到263,你的境况更糟。原因是,您的总数中增加的大部分来自可共享块,您只需为该可共享块支付一次内存成本 因此,这实际上取决于你的应用程序运行了多少个会话/实例,因为56MB的容量在所有会话之间有效共享 因此,权衡如下: 每个会话从专用WS=86.3-81.9=4.4MB(=S)保存 每个会话从可共享的增加=56个/num个会话(=I) 所以你想要的是S>I。显然,对于低会话数,你的情况更糟,对于高会话数,你的情况更好。因此,要找到你的等价点: 4.4=56次/次会话 给出:Num sessions=13
因此,如果您的应用程序在服务器上运行的实例超过13个,那么您最好使用NGEN。谢谢-这与我的理解是一致的。听到别人证实我的想法会有帮助。此外,我还发现,在调试时,我可以使用sos.dll中的“eeheap-loader”命令获得JITed代码的准确计数。不幸的是,对于我们来说,上述程序只是需要部署的一套客户端程序中的一个。总的来说,盈亏平衡点和随后的节省是这样的,我们决定不追求ngen在这个时候。