2017-03-21 9 views
5

なぜAsp.netコアがゴミを収集していないのか分かりません。先週、Webサービスを数日間実行させ、私のメモリ使用量は20GBに達しました。 GCが機能していないようです。だから、これをテストするために、大量の文字列を返す非常に単純なWebメソッドを書きました。アプリケーションは124MBしか使用していませんでしたが、Webメソッドを呼び出すたびに、メモリ使用量は411MBに達するまで高まりました。私がウェブメソッドを呼び出し続けていれば、それは高くなっていたでしょう。しかし、私はテストをやめることに決めました。Asp.netコアがゴミを収集していません

enter image description here

GCが動作していない理由を誰もが知っていますか?パフォーマンスモニタからわかるように、GCが呼び出されました(グラフの黄色のマーカー)。しかし、それはメモリからゴミを収集しませんでした。私は、GCがそれを参照していないものを熱心に収集すると思うだろう。

ご援助をよろしくお願い申し上げます。ありがとう! :)

+0

ガベージコレクションの適切なテストではないと思います。原因.netは、メモリが必要なときにメモリにヒープを作成します。しかし、それが収集されても、すぐにヒープが減少するわけではありません。それは時間の経過と共にそれを行います。ヒープを解放する理由は、作成に比べてリソースの消費量が多いことです。ただし、複数回呼び出すときに同じヒープを再利用する必要があります。あなたは非同期なしで試すことができますか?何が起こっているのかを見るだけですか? –

+0

こんにちは@HenrikBøgelundLavstsen、私は非同期Webメソッドを削除して、再度テストしますが、今度は同期メソッドです。私はまだ同じ記憶問題を抱えています。したがって、非同期の問題のようには見えません。あなたが言ったように、すべての呼び出しで同じメモリスペースが再利用されているはずです。すべての呼び出しでメモリ使用量が増えます。これは少し戸惑うものです。 – Zorthgo

+0

私はIISとKestrelの両方でもテストしました。残念ながら、彼らはどちらも同じ動作を示しています。 – Zorthgo

答えて

0

サーバーは、100,000,000 * 4文字〜411MBの出力をキャッシュしています。

関連する問題