1

いくつかの並列スレッドで、大量のデータをインポートするアプリケーションを開発しています。

時々、OutOfMemoryException (1.5、1.7GB の RAM などを使用した場合) が発生しました。

大したことではありませんが、これを 64 ビット プログラムにしようと思いました (それほど大きくないため)。しかし、.Net のバグ (64 ビットでは 10 進数で主キーを持てない) のため、64 ビット プログラムを作成できません (問題の説明と他の多くのケースを見つけました。そして、何も変更できません。このデータベースではなく、タイプやビューを追加することさえできません)。

1.5 ~ 1 ~ 7 GB の RAM しか必要ありません。2.5GBくらいまで到達できれば満足です。

「LARGEADDRESSAWARE」について何かを読みましたが、ビジュアルスタジオでそれを設定する場所が見つかりませんでした。また、boot.ini ファイルを変更する必要があると言っている他のほとんどのヒントも見つかりませんでした。

しかし、私のコンピューターはすでに 64 ビットのコンピューター (8 GB の RAM など) であるため、ここで何かをする必要はないと思います。

では、これらの 3GB の RAM にアクセスするにはどうすればよいでしょうか?

4

2 に答える 2

1

Visual Studio 内から LARGEADDRESSAWARE を設定できますか? で提案されているように、editbin を使用して LARGEADDRESSAWARE フラグを設定します。.

editbin /largeaddressaware $(TargetPath) 

Windows の x64 バージョンを実行するか、または 32 ビット システム変更 Boot.ini について述べたように、アプリが/3GBスイッチで 3Gb のアドレス空間を使用できるようにする必要があります。

于 2012-09-18T04:46:36.850 に答える
0

32 ビット アプリケーションには 4GiB の仮想アドレス空間があります。私の記憶が正しければ、Windows はデフォルトでアプリケーション (コード、スタック、データを含む) 用に 2GiB に、システム用に 2GiB に分割していました。

これをアプリケーション用に 3 GiB、システム用に 1 GiB に変更する方法があるはずですが、いずれにせよそれを超えることはできないと思います。

于 2012-09-18T05:01:32.920 に答える