私は大量のメモリ消費量を持っています。通常、GCはメモリのクリーニングをうまく処理します。 しかし、アプリケーションが2つの異なるマシンにインストールされている場合があります.1つは2GBのメモリ、もう1つは3GBのメモリです。 3GBのメモリではOut of Memory例外でクラッシュし、2GBではneversに失敗します。 .netランタイムは両方のマシンで同じで、アプリケーションのインストールも同じです。 メモリがいっぱいになると、Grabage Collectorを起動するトリガーが時間通りに起動されない可能性がありますか?異なるマシンでのガベージコレクタのパフォーマンス
答えて
収集するものがある場合、GCが機能することがわかります。コードでオブジェクトがGCによって無視される原因となっている未知のメモリリークがあるように聞こえます。言い換えれば、ランタイムに応じてコレクションに実行可能ではありません。
多くのイベントを使用していますか?
あなたはGCが有効なオブジェクトを収集していないと思われる場合は、あなたがコレクションを強制することができます(ポスト先制防衛:GC.Collect
を呼び出すことはめったに必要ないとされたメモリプロファイリングツールのない代替):
GC.Collect(GC.MaxGeneration)
http://msdn.microsoft.com/en-us/library/y46kxc5e.aspx
オブジェクトを収集する準備ができている場合、ここで収集されます。オブジェクトへの参照が保持されていると思われ、GCを停止します。
更新:もちろんボックス外では、メモリが不足しているマシンは必ずしもプログラムのためではありません。この他のコンピュータは、2Gbコンピュータとは対照的に、もっと多くのデータを同時に処理しますか?
RAMの量は、はありません。は、.NETプログラムで使用できるメモリの量に関係します。最新のオペレーティングシステムはすべて仮想メモリを提供します。 Windowsでは、プログラムで使用可能な仮想メモリの一般的な量は2ギガバイト未満です。特別なブートオプション(/ 3GB)があり、オペレーティングシステムからアドレス可能なメモリを奪うという代償を払って3GBまで増やすことができます。現代のほとんどのマシンでは動作しません。ビデオカードは、あまりにも多くのアドレス指定可能な物理メモリを食いつぶす傾向があります。このため実際には2GB未満にすることは不可能ではありません。
マシンが64ビットオペレーティングシステムを実行している場合、コードがx86モードで動作する場合、4ギガバイトに近づきます。また、x64モードの仮想メモリの大部分は、ページングファイルの最大サイズによってのみ制限されます。
これらの仮想メモリサイズは、マシンにインストールされている実際のRAM容量とは完全に独立しています。 15年前の非常に一般的な仮想メモリ空間よりもRAMが少ない場合は、いわゆる「ページングファイルのスラッシング」を呼び出すことができます。あなたは、オペレーティングシステムが、あまりにも多くの仮想メモリを同時に使用する必要性を尊重するのに十分なRAMを提供しようとしているのを見ています。 RAMとページングファイルの間でデータを交換します。それはマシンをひどく遅くすることがあります。
OutOfMemoryExceptionは、プログラムがアドレス指定可能な仮想メモリを使い果たしたことを示しています。最も典型的な原因は、実際にはすべてのアドレス空間を完全になくすわけではありません。割り当てようとしているオブジェクトに合わせて十分な大きさの穴がありません。仮想メモリは断片化する可能性があります。 SysInteralsのVMMapユーティリティを使用すると、プログラムの仮想メモリがどのように分割されているかを把握できます。
仮想メモリが不足しているのは処理が非常に難しく、本質的には回復できない非同期例外です。ビットマップの読み込みのようなものを除いて、たくさんの(管理されていない)メモリを必要とするオブジェクトの種類は、したがって、ほとんどの場合、十分な大きさの穴を見つけることにほとんど問題がありません。一般に、あなたのプログラムは、利用可能な領域の半分を使用するよりも、決して近くになるべきではありません。それは通常困難ではない、ギガバイトは多くの記憶です。プログラムのニーズが基本的にその限界を超えている場合は、プログラムに64ビットのオペレーティングシステム要件を指定する必要があります。 200ドルの解決策。
- 1. 異なるガベージコレクタをC#
- 2. 異なるマシン上の異なるフォームサイズ
- 3. 異なるマシン上のPythonプログラムのパフォーマンスを計算する方法
- 4. Javaガベージコレクタによるパフォーマンスの低下?提案が必要です
- 5. なぜセレンテストは異なるマシンで動作が異なるのですか?
- 6. 異なるマシンからの異なるtmuxセッションリスト?
- 7. ノードfs.unlink:エラーオブジェクトが異なるマシンで異なる
- 8. WPF Comboboxが異なるマシンで異なる表示
- 9. 異なるマシンで異なる値を返すPySNMP
- 10. 2つの異なるマシン間で動作が異なる.NET Frameworkのバージョン?
- 11. 異なるデータベーススキーマのパフォーマンスの比較
- 12. 同じクエリ、異なるパフォーマンス
- 13. 同じjavascriptの異なるサイト、大幅に異なるパフォーマンス
- 14. Androdi Studio:異なるマシン上のdev環境で異なるsdkパスを使用
- 15. mysql 'アクセス拒否'エラー - 異なるマシンでの動作が異なる
- 16. 2台のサーバー - 異なるPHPパフォーマンス
- 17. 異なるバックプロパゲーションアルゴリズムのパフォーマンス比較プロット
- 18. 異なるマシンのRスクリプト実行が異なる結果につながる
- 19. 異なるマシンでのCPU負荷の検出
- 20. Rのpdftoolsが異なるマシン間で実行する場合
- 21. 負荷の異なるマシンでパフォーマンステストを実行する
- 22. 異なるマシン上で動作するプログラムのMakefile
- 23. GCEUと物理マシンのパフォーマンス(例:MacBook Pro)
- 24. 同じマシン上のTCP IPパフォーマンス
- 25. Boehmガベージコレクタの正確なモード
- 26. ガベージコレクタのないプロジェクトosx
- 27. 異なるマシンでクラスのシリアル化の結果が異なるのはなぜですか?
- 28. ケラスのニューラルネットワークモデルが異なるマシンで異なる値を出力するのはなぜですか?
- 29. Solr異なるシャードと別のマシンで分散検索
- 30. EPPlus AutoFit()別のマシンで異なるカラム幅
2台のマシンでは、RAMサイズよりもはるかに多くのサイズが必要です。私たちにはオペレーティングシステムが必要であり、あなたがしていることとそうでないことをよく理解している必要があります。あなたはビットマップのような多くの管理されていないリソースを扱いますか? ORMを使用していますか?メモリのGCピニングを使用していますか? – Aliostad