- PR -

.NET Framework でメモリ不足例外の条件

1
投稿者投稿内容
未記入
会議室デビュー日: 2006/06/21
投稿数: 2
投稿日時: 2006-06-21 16:58
いつも利用させていただいています。
現在、開発しているシステムで メモリ不足 または OutOfMemoryException
が発生します。発生頻度としては状況です。ただし、パフォーマンスモニタ
メモリ使用率を確認したところ、Memory\Available Bytes はまだ、1GB以上
余裕があります。また、タスクマネージャーのコミットチャージを参照して
も限界値には達していません。
VB.NET で メモリ不足または OutOfMemoryException が発生するのは、どの
ような条件・状況なのでしょか。ご存知の方がいらっしゃいましたら、ご教
授ください。

【アプリケーション条件】
言語:VB.NET(.NET Framework 1.1)
実行OS:Windows2003 SE
実行環境:Metaサーバ上で実行
深山
ベテラン
会議室デビュー日: 2006/05/09
投稿数: 66
お住まい・勤務地: 都内某所
投稿日時: 2006-06-21 17:34
引用:

未記入さんの書き込み (2006-06-21 16:58) より:

現在、開発しているシステムで メモリ不足 または OutOfMemoryException
が発生します。発生頻度としては状況です。ただし、パフォーマンスモニタ
メモリ使用率を確認したところ、MemoryAvailable Bytes はまだ、1GB以上
余裕があります。また、タスクマネージャーのコミットチャージを参照して
も限界値には達していません。



配列の場合などは、連続したメモリ領域の確保が出来ずにOutOfMemoryExceptionが発生することがあります。
ishisaka
常連さん
会議室デビュー日: 2001/10/10
投稿数: 23
投稿日時: 2006-06-30 07:14
32bitアプリケーションの場合、アプリケーションが利用できるメモリ量は通常2GBまでです。これはどれだけ物理メモリを積んでも変わりません。

ただこの上限に引っかかるほどでっかい配列を作っているわけではないでしょうね。。

現状のロジックが構造体もしくは通常型の配列でこのエラーが出るようでしたら、わざとデータクラスを作って、配列をArrayList等にすると、このエラーを回避することが出来るかもしれません。ただしボクシングとアンボクシングが入り速度的には遅くなると思います。

本当は配列を分割するというか、もっと少ない配列で動作するようロジックを見直すべきなんでしょう。
_________________
いしさかただひろ(*^^)v
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2006-06-30 07:17
「どの命令を実行した時に」と言うのを明確にしてくれないと、「メモリが不足したときに」としか答えようがないのですけど:-

変わったところでは、非同期IOを短時間に大量に実行すると、非同期IOを実現するためのFIFOキューが不足して、OSがメモリ不足のエラーを返したりします。.NETで試したことはありませんが、恐らくOutOfMemoryExceptionになるでしょうね。
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
1

スキルアップ/キャリアアップ(JOB@IT)