When you use this overload, it will only load once into memory. You can check it using Process Explorer. See the list of loaded modules. Each assembly is uploaded to .NET 3.5 using LoadLibrary. In addition, it is loaded as a memory mapping file into the process.
Starting with .NET 4.0, an assembly is loaded only as a file with memory mapping, and not via LoadLibrary, unless it is a precompiled assembly.
This violation in .NET 4 was made because MS discovered during the development of VS 2010 that their memory was really running out pretty quickly. Someone found that each loaded assembly was twice its original size in virtual memory, because it was loaded once through LoadLibrary and a second time as a memory-mapped file. This is not easy to find if you look with VMMap in your process. Due to the large amount of code in VS, this was a serious issue for VS2010, which is now mostly managed.
source share