同じクラス ライブラリを参照する 2 つの ASP.NET Web サイトがあります。現在、クラス ライブラリの 2 つのコピーを含むサイトを公開しています。これはメモリを浪費しますか?OS は、ファイルの 2 つのコピーが同じであることを認識しているので、DLL のコード セクションのメモリを共有できますか? それを GAC または別の共有場所にコピーして、1 つの物理ファイルだけにすると、マップされるメモリの合計が少なくなりますか?
2 に答える
3
この質問は、ASP.NET DLL にはコードが含まれていないという間違った前提から始まります。データ、IL、およびアセンブリ マニフェストのみ。ジッターは IL からマシン コードを生成し、そのコードは AppDomain のローダー ヒープに入ります。共有されていないプロセスのプライベート バイト。
IL から生成されたマシン コードのコピーを 1 つ取得することは可能ですが、Ngen.exe を実行する必要があります。IL をプリコンパイルし、GAC サブディレクトリに格納されている .ni.dll であるネイティブ DLL を生成します。そのコードは、RAM 内の 1 つのコピーとのみ共有できます。
于 2013-05-23T20:05:23.973 に答える
0
プロセスとアプリ ドメインは、正しく機能するためにメモリに読み込まれている必要があります。アプリ ドメインとプロセスはサンドボックス化されています。
于 2013-05-23T19:27:30.017 に答える