Microsoftは、32ビットシステムで実行されているプロセスのメモリを増やすために、Boot.iniで/ 3Gbスイッチを使用することを推奨しています。
現在、devenvプロセス(Visual Studio 2008)には大量のメモリが必要です。これは、多くのプロジェクトとフォームがあり、設計時に多くのリソースを消費する複雑なソリューションがあるためです。
/ 3Gbスイッチを使用することのマイナス面を誰かが知っている場合は、それを使用することが推奨されない状況はありますか。
Microsoftは、32ビットシステムで実行されているプロセスのメモリを増やすために、Boot.iniで/ 3Gbスイッチを使用することを推奨しています。
現在、devenvプロセス(Visual Studio 2008)には大量のメモリが必要です。これは、多くのプロジェクトとフォームがあり、設計時に多くのリソースを消費する複雑なソリューションがあるためです。
/ 3Gbスイッチを使用することのマイナス面を誰かが知っている場合は、それを使用することが推奨されない状況はありますか。
回答:
デスクトップマシンでは、おそらく問題はありません。カーネルページプールは、/ 3GBスイッチが設定されたW2K3 / WXPマシンでは小さくなります。カーネルページプールの枯渇に近づくべきではないため、これはおそらくデスクトップマシンの問題ではありません。サーバーでは、カーネルのページプールを使い果たすと問題が発生し、それを使い果たす可能性が高くなります。
以下は、/ 3GBスイッチに関連するカーネルメモリの考慮事項についての詳細です。本当に必要な場合は、NTカーネルデバッガーを起動して、変更の前後にこのドキュメントの情報を使用してシステムのプロファイルを作成できます。http://blogs.technet.com/markrussinovich/archive/2009/03/26 /3211216.aspx
カーネルで使用できるメモリが少なくなります。スイッチは、カーネルモードのアドレススペース/ユーザーモードのアドレススペースの分割を、以前は2GBから2GBに、1GBから3GBに調整します。続行する前に、/ 3GBに関するレイモンドチェンの投稿とフォローアップをお読みください。
変更を行う前に、まず、実行するプロセスがLARGEADDRESSAWAREフラグにリンクされているかどうかを確認する必要があります。フラグを使用すると、プロセスがメモリを使用する方法に変更はありません。
これにはSDKツールを使用できます。
dumpbin / headers exeName
吐き出されるヘッダーには次のものが含まれます。
アプリケーションは大きな(> 2GB)アドレスを処理できます
私はdevenv.exeをチェックしましたが、VS2008ではフラグが含まれています。
たくさんの欠点。デフォルトでは、Windowsは4GBのメモリプールをすべてのプロセスに割り当てます。これは、カーネルモードプロセス(すべてのアプリに共通)とユーザーモードプロセス(アプリごとに一意)の間で50/50に分割されます(簡単な説明)。したがって、システムで実行されているアプリには2GBのメモリがあり、システム自体には2GBのメモリがあります。重要な注意:この2 GBは、システムで実行されているすべてのアプリで同じ2 GBです。
/ 3GBスイッチは、カーネルモードが1GB、ユーザーモードが3GBになるように分割を調整します。
次に、実行しているアプリを検討します。それらのいくつかはより多くのカーネルモードスペースを必要とし、いくつかはより多くのユーザーモードスペースを必要とします。カーネルモードプールが共有されているため、カーネルモードのメモリを圧迫するアプリを実行している場合、メモリがすぐに不足する可能性があります。一方、アプリが多くのユーザーモードメモリを使用する場合、/ 3GBを実装すると、必要なヘッドルームが確保されます。
したがって、実行したいアプリケーションの性質にかかっています。根本的なルールは、アプリベンダーに相談してドキュメントを読むことです。特に、アプリベンダーが疑いを抱くようにすべき推奨事項がない場合は、アプリを適切にテストしたかどうかを確認します。これは、すべてのベンダーが知っておくべき基本的なものです。
それについてはかなり良い議論がここにあります:http : //blogs.technet.com/askperf/archive/2007/03/23/memory-management-demystifying-3gb.aspx
あなたの特定のケースでは、/ 3GBは本当にあなたが望むものを得られないので、64ビットに切り替えてより多くのRAMを取得することはより実行可能な解決策だと思います(XPでも動作しますか?)
多数の大きな画像で画像処理アプリを実行しているいくつかのシステムで使用しましたが、問題に気づくことはありませんでした。アプリケーションメモリの追加のギグが必要な状況では、おそらくアプリを実行し、システムで他に何もしないため、おそらく大きな影響はありません。
私はそれが奇妙な方法でビデオカードに干渉するのを見ました。しかし、適切に記述されていないと、このスイッチの動作が不正になる可能性があります。
/ USERVAスイッチを追加すると、これらの問題を回避できる場合があります。
http://support.microsoft.com/kb/319043
http://support.microsoft.com/kb/833721
http://support.microsoft.com/kb/839490
http://support.microsoft.com/kb / 316739
LARGEADDRESSAWAREバイナリのエンタープライズサーバーOSでのみ(デバッグドライバーなどを除いて)確実に機能します。
devenvはそのようなバイナリではありません。たとえば、SQL ServerとExchangeです。
x64ビットのOS と VS x64の編集が必要です。2GBの制限を超えるには、LARGEADDRESSAWAREがx64で検出されます。