Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I'm not sure how accurate the following infomrationis with newer versions of .NET and/or Windows versions. MS may have addressed some of the DLL loading/sharing issues since the early days of .NET. But I believe that much of the following still does apply.</p> <p>With .NET assemblies a lot of the benefit of page sharing between processes (and between Terminal server sessions) disappears because the JIT needs to write the native code on the fly - there's no image file to back up the native code. So each process gets it's own, separate memory pages for the jitted code.</p> <p>This is similar to the issues that are caused by having DLLs improperly based - if the OS needs to perform fixups on a standard Win32 DLL when it's loaded, the memory pages for the fixed up portions cannot be shared.</p> <p>However, even if the jitted code cannot be shared, there is a benefit to rebasing .NET DLLs because the DLL is still loaded for the metadata (and IL) - and that stuff can be shared if no fixups are required.</p> <p>It's possible to help share memory pages with a .NET assembly by using ngen. but that brings along its own set of issues.</p> <p>See this old blog post by Jason Zander for some details:</p> <p><a href="http://blogs.msdn.com/jasonz/archive/2003/09/24/53574.aspx" rel="nofollow noreferrer">http://blogs.msdn.com/jasonz/archive/2003/09/24/53574.aspx</a></p> <p>Larry Osterman has a decent blog article on DLL page sharing and the effect of fixups:</p> <p><a href="http://blogs.msdn.com/larryosterman/archive/2004/07/06/174516.aspx" rel="nofollow noreferrer">http://blogs.msdn.com/larryosterman/archive/2004/07/06/174516.aspx</a></p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload