0

既存の x64 ソフトウェアを x86 バージョンにするのは大変な作業です。

x64版だと6G~10G程度のメモリが必要ですが、x86版だと1.5G程度でクラッシュします。

コードをあまり変更せずに、キャッシュファイル/一時ファイルを作成してメモリ<->ハードディスク交換を行う簡単な方法があるかどうか疑問に思っていますか?

ありがとうございました

4

1 に答える 1

0

クラッシュした場合は、修正するバグ(またはいくつか)があります。

最大2〜3GのRAMを搭載した32ビットモードでコードを機能させることができるかどうかは、コードに大きく依存します。そして、あなたはおそらくあなたのコードを持っていて、それが何をすべきか、そしてそれがどのように機能するかについてのわずかな手がかりを持っていないので、この質問に答えるのにはるかに優れています。

いくつかのアイデア:

  1. メモリリークを修正する
  2. メモリの断片化を修正
  3. より小さなチャンクおよび/またはより少ないチャンクでデータを処理する
  4. それぞれがより少ないメモリを使用する独立したステージに処理を並べ替えます
  5. 可能な限りさまざまな処理ステージ間でメモリを共有し(C / C ++を考えてくださいunion)、未使用のスペースと不要なデータコピーを最小限に抑えます
  6. より少ないメモリを必要とするよりスマートなアルゴリズムを使用する
  7. 場合によってはその場でデータを圧縮および解凍します
  8. プログラム全体をいくつかに分割して、4Gよりも大きな累積アドレス空間とより多くの物理メモリを活用します。PAE
  9. C ++の場合は、new/ delete[]/ */をオーバーロード->し、バックグラウンドでディスクI / Oとの間でメモリを管理することにより、仮想アドレス空間と使用可能なメモリの量を「拡張」してみることができます。メモリマップトファイルまたは通常のファイルを使用できます。これは醜くなり、正しく速く行うのが難しくなる可能性があります。
  10. 64ビットアプリを32ビットOSで実行できる仮想化ソリューションを見つけるか、実装します。または、32ビットOS上または32ビットOSVMと並行して実行される64ビットで実行します。ただし、スピードやハードルは気に入らないかもしれません。
  11. ..。

幸運を!

于 2013-01-21T05:02:51.820 に答える