2011-11-28 77 views
3

爲每個進程分配一個單獨的內存。在.net中,該進程可以包含多個應用程序域。如何爲每個應用程序域分配內存?他們是否分享過程的共同記憶?在應用程序域之間共享內存

回答

1

沒有他們不能訪問該存儲空間相同的存儲和共享對象,當你從一個應用程序域將它們傳遞到另一個對象應該被整理:

Application Domains

代碼在一個應用程序中運行不能直接從另一個應用程序訪問代碼或資源。公共語言運行庫 通過阻止不同應用程序域中對象之間的直接調用來實施此隔離。通過域之間傳遞的對象是 或者被代理複製或訪問。如果該對象被複制,則該對象的呼叫 是本地的。也就是說,調用者和被引用的對象 都在相同的應用程序域中。如果通過代理訪問的對象是 ,則對該對象的調用是遠程的。在這個 的情況下,調用者和被引用的對象在不同的​​ 應用程序域中。 跨域調用使用與兩個進程之間或兩臺機器之間的調用相同的遠程調用 基礎結構。 因此,被引用對象的元數據必須爲 ,這兩個應用程序域都可以使方法調用爲 JIT編譯正確。如果調用域沒有獲得 爲對象的元數據被調用時,編譯可能會失敗 與類型的異常32位計算機上System.IO.FileNotFound

+0

,如果可用RAM爲4GB, CLR爲應用程序分配1.5 GB到2GB。那麼這個記憶是如何分享的。每個應用程序域是否會獲得2GB? – Raghav55

相關問題