none
LAAフラグがONのexeをビルドする RRS feed

  • 質問

  • 3GBスイッチが有効な32bitWindowsでメモリ空間を有効に活用したいと考えています。

    ビルド時にLAA(Large Address Aware)フラグがONのexeファイルを自動生成する方法を教えてください。

    質問はVS2010(C#)を前提にしています。

     


    C#開発者
    2010年9月28日 10:29

回答

すべての返信

  • コンパイラや IDE には存在しないのでは?
    US の Connect でこういったアイテムもあります。
    https://connect.microsoft.com/VisualStudio/feedback/details/93771/net-compilers-should-support-a-largeaddressaware-flag

    技術的にはビルド後イベントや editbin を駆使すればできるとは思いますが。(試してません)


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク MicroVAX 2010年9月29日 11:25
    2010年9月28日 14:06
    モデレータ
  • Azulean さんの推測通り、ビルド後のイベントに editbin を呼び出せば良さそうです。

      Out of memory? Easy ways to increase the memory available to your program - Calvin Hsia's WebLog - Site Home - MSDN Blogs
      http://blogs.msdn.com/b/calvin_hsia/archive/2010/09/27/10068359.aspx

      4GT に対応した applications を作成する方法
      http://blogs.wankuma.com/tyappi/archive/2009/02/08/167756.aspx
    • 回答としてマーク MicroVAX 2010年9月29日 11:25
    2010年9月28日 15:06
  • ご回答ありがとうございます。

    ビルド後のイベントに下記のコマンドを追加しました。

    SET PATH=%PATH%;C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE;C:\Program Files\Microsoft Visual Studio 10.0\VC\BIN\x86_amd64;C:\Program Files\Microsoft Visual Studio 10.0\VC\BIN;C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools;C:\Windows\Microsoft.NET\Framework\v4.0.30319;C:\Windows\Microsoft.NET\Framework\v3.5;C:\Windows\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 10.0\VC\VCPackages
    "editbin.exe" /LARGEADDRESSAWARE "$(TargetPath)"

     


    C#開発者
    2010年9月29日 11:26
  • しかし、これどれほどの価値があるのでしょうか?

    OS自身の設定を変更し、/3GBオプションを有効化した環境でしか効果を発揮しません。そう設定したとしても使用できるメモリが2GBから3GBに増えるだけです。32bit WindowsですからOSが使用できるメモリ領域は最大でも4GBなわけで、アプリケーションが3GB使おうとするとディスクキャッシュなどが削られパフォーマンスが劣化しますし…。
    ディスクキャッシュの影響が少ないのはオンメモリで大量のワークエリアを要求するような計算プログラムなんかが思い浮かびますが、だとしたらC#で記述すること自体、非効率ですし…。

    そんなことするぐらいなら、いまどきは64bit Windowsを選択するんじゃないかな~と思いました。
    もしくは、32bit WindowsのままであってもAWEを使うとか…もちろんAWEはC#からは扱えませんが。

    2010年9月29日 11:36
  • ご回答ありがとうございます。
    生産ラインで使用しているFAコンピュータやセンサーが未だ64bit版ドライバー未対応なのでやむなく32bit版Windowsを使っています。大量の数値解析を処理するのですが、LAAがオフだとワーキングセットが1.2GBあたりでメモリ不足に陥るため、LAAの変更で対応しようと考えています。
    C#開発者
    2010年9月30日 3:58