WindowsXP
VB.NET2003で開発しています。
構造体の配列に、ループで複数のデータを読込んで集計をするアプリですが、
行数が数百万行になるデータのため、多くのメモリを消費します。
このPCには3Gのメモリを搭載していますが、
タスクマネージャで監視していると、
このアプリのプロセスのメモリ使用量が1G程度になったところで、
OutOfMemoryが発生します。
1つのアプリで使用できるメモリ量に制限などがあるのでしょうか?
あるとしたら、多くのメモリを割り当てる方法は無いのでしょうか?
宜しくお願い致します。
方法はありますが・・・
そういう場合にこそ、データベース使う手は無いので
しょうか?
構造体と言うことは、データの形式が一様で、ただ単
に大量に(数百万件)あると言うことのみ。
DBであれば、HDDの空き容量MAXまででも可能〜
※ 元データは?
CSVとか、バイナリファイルとか?
私は計測データで1億個とか・・・やってますので
統計する以前に搭載メモリではどうしようもない。
バイナリファイルに逐次保存しながら、DBに保存
しなおして統計・集計してます。
※ 計算やベクトルに特化したDBエンジンもあります
探してみては?
以上。参考まで。
>オショウ様
ありがとうございます。
元データ自体は小さなxlsファイルで、
アプリの処理により変数が膨らんでいく形です。
DBも検討しましたが、処理速度が重要になるため、
現状、メモリ上で処理しています。
DBの使用は、最終手段と考えております。
自分なりにもう少し色々と検討してみたいと思います。
アプリに割り当てられるメモリ量は調整できますが・・・
一体上限はどの程度と見積もっているのでしょうか?
32ビットOSの場合、上限3GBですので、それ以上となると
64ビットOSに変更した方が、よいかと・・・
※ VirtualAllocとか・・・
Virtual.....というAPIを調べてみて下さい。
仮想メモリからメモリ予約して使えます。
が、VB.NETとなるとちょっと厄介?
使って使えないことないですが・・・
以上。