2013-02-02 33 views
0

我們有大約80個應用程序位於同一臺服務器上。 是所有使用相同的定製應用程序,aspnet webform,C#編譯的非常小的網站。 每個應用程序都有自己的bin目錄中的應用程序dll的副本,加上一些開放源碼的第三方庫(bin文件夾大約15mb在磁盤上) 該應用程序是由我,所以我可以重建簽署並放入GAC所以所有網站都從那裏獲得。 我的問題是:「在內存消耗方面會不錯,只有一個gll而不是80的dll副本?」 「這是否可以提高整體性能和內存使用率,除了我可以刪除15 * 80Mb磁盤空間使用率?」 謝謝應用程序池dll和GAC

+0

我只能用[VMMap](http://technet.microsoft.com/en-us/sysinternals/dd535533.aspx)這樣的工具來判斷內存是否可共享。這些應用程序是否共享相同的應用程序域? – rene

+0

偉大的建議。該工具確實表明asp會在臨時文件夾中創建每個dll的副本。所以磁盤空間消耗是兩次(一個在bin中,一個在temp中),每個使用的dll在內存中都是kep,並且消耗兩次內存。相反,gac dll會加載一次。我想這會導致服務器上很多加載/卸載進程,並可能會降低網站的服務速度。可能移動大部分dll在gac中可以提高整體性能。 – manudea

回答

1

Dll內存消耗量會相同。在GAC中註冊一個Dll有一個很好的優勢,那就是可以通過系統上運行的任何網絡應用程序找到它。第二個是你把一個dll加入到GAC中,通過使用ngen.exe你可以生成一個DLL的本地圖像,這是一個完全機器級的編譯版本,可以實時編譯,從而提高執行速度。可能還有其他的優點,但是現在我可以想到的就是這些。

+0

VMMap顯示每個dll單獨加載到內存中... – manudea

+0

+1。另一個優點是將更新dll在一個地方比80。 – kateroh