
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
試しにtest クラスを作って、Dictionary<int,test> で10億個作ってみましたが、別にエラーにはなりませんね。
ま、クラスが肥大化すれば別なんでしょうが。Windows7 64bit corei7-3770 32GB です。
過去の経験から申しますと、原因不明のエラーがメモリーの破損に起因するという事がありました。
普段はエラーはでませんが、そういう大容量メモリーを使うプログラムでのみ発症しました。
最終的にはメモリテストをPCショップでやってもらって初めて確定でき、メモリー交換をしてもらう事で解消しました。メモリーの保証書はとっておくものですね。
この回答への補足
もしかすると私が勘違いしているかもしれませんが、小さなクラスtest class を作成し、
Dictionary<long, test> t = new Dictionary<long, test>
test te = new test();
for (long i = 0; i < 1000000000; i ++)
{
t.Add(i, te);
}
上記のコードではメモリ不足になります。
for (long i = 0; i < 1000000000; i ++)
{
Dictionary<long, test> t = new Dictionary<long, test>
}
上記のコードでは確かにエラーにはなりませんが Dictionary
を作成して要素を10億個追加することにはならないと思います。
No.5
- 回答日時:
#4です。
>仮想メモリはどう設定するのでしょうか。
これは単なるWindowsの設定です。
検索すればいろいろ出てきますが、Windows7なら、このあたりでしょうか?
http://121ware.com/qasearch/1007/app/servlet/rel …
>プログラムを64ビットで動かすにはどこを設定すればよろしいでしょうか。
any cpuになっているなら大丈夫だと思います。
32bitで動いているとしたら、だいたい1.5GbyteほどメモリをつかったところでOutOfMemoryになると思いますし。
No.4
- 回答日時:
仮想メモリは十分(100G~5T程度?)確保されていますでしょうか。
あと、C#の構成はx64、あるいはany cpuが選択されていますでしょうか。
プログラムが64bitで動いていれば、メモリ空間は足りているはずなので、仮想メモリが期待通りに動作してくれれば、動きそうな気はします。
実際に試したことはないので、憶測ですけど・・・。
まあ、仮に動いたとしても、仮想メモリ頼りでは効率が悪そうなので、#1さんのおっしゃるようにdatabaseの使用を検討したほうがよさそうですけどね。
この回答への補足
>仮想メモリは十分(100G~5T程度?)確保されていますで>しょうか
仮想メモリはどう設定するのでしょうか。C#の構成は any cpu が選択されています。
プログラムを64ビットで動かすにはどこを設定すればよろしいでしょうか。
No.2
- 回答日時:
明らかにメモリ不足です。
50 個のメンバ変数がすべて int だとして、1000 ≒ 1024 = 2^10 ですから 4000万個 ≒ 40M個になり、
4 (int 型のサイズ) * 50個 * 4000万個 ≒ 8G バイト
という計算になります。
というか、なんでそんなにいっぺんに1億個ものデータが必要な処理を行う羽目になったのでしょうか。
その辺を具体的に補足いただければ代替案が出せるかもしれません。
この回答への補足
メンバ変数は long です。ので16Gバイトのようですが、なぜこんなにデータが必要なのかということに関しては以下の通りです。
一つのクラスがある事象を表現するのに long値 で50ぐらいを使用します。そのクラスが初期値としてたとえば100万個作成しておきます。
それらの事象を時間の経過とともに計算して、その結果、自分自身(クラス)を増減します。最低は0になり、最高に増加した場合はたとえば1000倍の10億個といった感じです。
計算は属性値のメンバ変数を必ず参照して行いますので大量のクラスをHDDに保存しておくと計算に時間がかかりますのでメモリ上に保存しておきたかったのです。
言ってみれば個数の増減シミュレーションです。
No.1
- 回答日時:
メンバひとつで4byteとして要素ひとつに50x4 = 200byte、
それが4000万個だと 200 x 4000 x 10000 = 8Gbyte
そりゃエラーが起こるでしょうねぇ。
データを減らすか、それができなきゃ Database 使うかな。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux VirtualBox ゲストOSにPC内蔵HDDのパーティションをマウントする方法は? 2 2023/05/06 22:52
- フリーソフト DVDshrink メモリリソースが足りません。 1 2022/08/16 23:17
- フリーソフト DVDshrink メモリリソースが足りません。 2 2022/08/16 23:22
- デスクトップパソコン ん~…分からん 7 2022/06/10 10:47
- ドライブ・ストレージ 古い外付けHDDから新品外付けHDDへのデータ移行方法 (Mac) 2 2022/12/11 02:01
- Windows 10 windows11 起動エラー 0xc0000225 1 2022/05/14 11:58
- ドライブ・ストレージ SSDを追加したら昔のHDDがおかしくなった 4 2023/03/23 13:25
- Windows 10 Windows10搭載の画面録画 容量を小さくする方法ありますか? 3 2022/06/21 09:45
- その他(ソフトウェア) Windowsのバックアップソフトを探しています 1 2023/01/24 18:49
- その他(ソフトウェア) 大容量の動画ファイルを分割したい 4 2023/04/20 16:34
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB初心者ですm(__)m
-
エラーについて(更新)
-
ガス給湯器のエラーコードにつ...
-
SQLServerへの接続子による違い...
-
ヤフーショッピングでPayPay支...
-
クラスタ構成について教えて下...
-
MS-DOSについて
-
PHP-ACEESか PHP-MySQL-ACCESSか
-
データベースの更新は手動でや...
-
ディスク上のサイズの乖離が大...
-
pg_restoreでエラー
-
SJISのDBは作れますか?
-
スキャンディスクをするとメモ...
-
バキュームをクーロンから実行
-
ACCESS MSDE フォーム上から...
-
キャッシュしたクエリを確認したい
-
INSERT 0 1が大量に表示されて...
-
SPSS Student Version 13.0J...
-
レンタルサーバーのPostgreSQL...
-
フォーマットについて。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ヤフーショッピングでPayPay支...
-
リコーimagioneo630 エラーs...
-
C#で大量のデータを扱うソフト...
-
トランザクションの開始
-
更新不要はどういう意味なので...
-
ソケットの異常終了について
-
関数引数に対する制限値チェッ...
-
SQLServerへの接続子による違い...
-
エクセルVBA_ADO「ファイアホー...
-
socket のエラー
-
マインクラフトエラー
-
MPI
-
BASP21送信エラーVB.NET
-
CloseHandleのエラーについて
-
正規表現のエラーを区別したい
-
e-Taxで申告書送信ができません
-
データの取り込み
-
トランザクションの開始2
-
URLDownloadToFileについて
-
FDに保存したExcelデータが読み...
おすすめ情報