- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:64bit C#アプリ メモリをたくさん使いたい)
64bit C#アプリでメモリをたくさん使いたい!32GBの増強で改善する?
このQ&Aのポイント
- 64bit Windows7 Pro + VisualStudio2010 + C#でメモリをたくさん使いたいと思います。パソコンは16GBを積んでいます。
- シンプルなクラスを100,000,000個位newしてListに収めるだけのアプリで、3~4GBを超えるとクラスのnewに失敗します。GC.Collect()を呼び出しても3~6GB程度で失敗します。
- 32GBに増強することで、メモリの使用量を2倍程度まで伸ばすことができるのでしょうか?理解が間違っているのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Listに要素を追加する場合、瞬間的に要素数の2倍以上のメモリを消費するハズ。 LinkedLisでtはいかがでしょうか。
その他の回答 (1)
- zwi
- ベストアンサー率56% (730/1282)
回答No.1
そこまで大容量に挑戦した事無いですが、ソリューションプラットフォームをx64してもダメですか?
質問者
お礼
ありがとうございます。 x64 にしてもダメみたいです。System.IntPtr.Size が8 になるのを確認していますので64bit なのは間違いないんですが・・・。 ちなみに失敗は FatalExecutionEngineError という.Net 側のエラーのようです。う~~ん。
お礼
ありがとうございます。 List に要素を追加する時にですが・・・。list 作成時に大きさをあらかじめ指定できるのですが、それがあるなしでエラーが出る事があります。 LinkedList は指定できず、それゆえかどうかはわかりませんが、やはりうまくいきません。(ちなみに10,000,000 個前後でダメです) wikipedia によるとクラスはヒープ、構造体はスタックとありました。実際にいろいろパターンを変えて試したところ、構造体をList<List<structX>> の入れ子にして100個づつに分割して保持してみたところ、唯一エラーなく大量にメモリを使えました。 #ファンですw