問題我們在一臺機器上發佈了很多微服務,即:30個實例,每個使用150-300 MB。 許多微服務使用相同的庫,但獨立加載它。在w3wp進程之間共享程序集以減少內存使用
問題 CLR可以加載程序集一次並與其他域共享以減少內存使用量嗎?
調查和實驗當我通過ProcessExplorer調查這個問題時,我看到每個w3wp進程都有2個應用程序域。 其中一個用於從GAC加載程序集,另一個用於從應用程序文件夾加載程序集。
當我將通用組件放入GAC時。 它增加了可共享,共享WS並減少所有進程的私有WS。但工作集沒有變化。
我猜想進程的內存是相互隔離的 –
我在Process Explorer幫助中找到了下一個定義。 **可共享WS **分配給可與其他進程共享的類型或區域的物理內存量。 **共享WS **當前與其他進程共享的可共享WS的數量。 – StuS
這不可能實現。但是如果你使用ASP.NET Core,微軟還有一些其他的東西https://github.com/dotnet/announcements/issues/30。 –