
64bit windows7 Pro + VisualStudio2010 + C# でメモリをたくさん使いたいと思います。
パソコンは16GB を積んでいます。
とりあえずサンプルとしてシンプルなクラスを100,000,000 個位new してList に収めるだけのものを作ってみました。
ところが3~4GB を超えた位(10,000,000に満たない数)でクラスのnew に失敗します。対策としてGC.Collect() をこまめに明示的に呼び出してみましたが、3~6GB 程度でやはり失敗します。今度は最悪でブルースクリーンにもなりました。
調子の良い時は7GB を超えた時もありますが、最後には失敗します。
32GB に増強すれば、発症も2倍程度にまで伸ばせますか?それとも根本的な理解が間違ってますか?
# メモリ使用量を抑えるのが常套という回答は今回は結構です。メモリの多いマシンに合わせて既存のアプリを改良できたら考えておりますゆえ。
No.2ベストアンサー
- 回答日時:
Listに要素を追加する場合、瞬間的に要素数の2倍以上のメモリを消費するハズ。
LinkedLisでtはいかがでしょうか。
ありがとうございます。
List に要素を追加する時にですが・・・。list 作成時に大きさをあらかじめ指定できるのですが、それがあるなしでエラーが出る事があります。
LinkedList は指定できず、それゆえかどうかはわかりませんが、やはりうまくいきません。(ちなみに10,000,000 個前後でダメです)
wikipedia によるとクラスはヒープ、構造体はスタックとありました。実際にいろいろパターンを変えて試したところ、構造体をList<List<structX>> の入れ子にして100個づつに分割して保持してみたところ、唯一エラーなく大量にメモリを使えました。
#ファンですw
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語における再帰呼び出しの...
-
メモリーリークエラーが起こる
-
変数をあなたの身近なものに例...
-
エクセルのメモリ使用状況/Appl...
-
Bitmapを重ね合わせる方法
-
こんなメッセージがでます
-
エラー処理,メモリ開放,exit
-
LoadLibraryしたらFreeLibrary
-
大容量のメモリ確保をスワップ...
-
エクセル キャッシュメモリー...
-
メモリのセグメント違反の解決...
-
VBAの配列サイズとメモリに関して
-
Macターミナルで実行中のプログ...
-
家電製品の電力周波数を変える機械
-
TCP/IP通信時のサーバーからの受信
-
タスクマネージャーのプロセス...
-
このレジの並び方は間違ってま...
-
InternetOpenUrlの引数URL文字...
-
実行時のコマンドプロンプトを...
-
ボタンが押された事を検知する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語で、メモリを解放しないで...
-
Access Violationについて
-
VBAの配列サイズとメモリに関して
-
メモリのセグメント違反の解決...
-
メモリが不足しています(VBA)
-
メモリ不足
-
大容量のメモリ確保をスワップ...
-
ファイルマッピング関数で失敗
-
PC-98で拡張メモリを使え...
-
エラーについて
-
「ヒープサイズの設定」て何?
-
エクセルのメモリ使用状況/Appl...
-
C言語における再帰呼び出しの...
-
オフスクリーンサーフェスへの...
-
1ページに収まるオブジェクト...
-
新規購入PCのスペックについて...
-
4GB搭載したマシンのメモリ情...
-
組み込み系でのmallocについて
-
ルネサスマイコン(R8C) ビルド...
-
Visual Basic Net2003
おすすめ情報