C#で長いTCP接続ソケットサーバーを作成しました。私のサーバーのメモリ内のスパイクが発生します。私はドットネットメモリプロファイラ(ツール)を使用して、メモリリークがどこであるかを検出しました。 Memory Profilerはプライベートヒープが巨大であることを示しており、メモリは以下のようなものであることを示しています(番号は実際ではないので、GC0とGC2の穴は非常に大きく、データサイズは通常です)。GCホールとは何ですか?
Managed heaps - 1,500,000KB
Normal heap - 1400,000KB
Generation #0 - 600,000KB
Data - 100,000KB
"Holes" - 500,000KB
Generation #1 - xxKB
Data - 0KB
"Holes" - xKB
Generation #2 - xxxxxxxxxxxxxKB
Data - 100,000KB
"Holes" - 700,000KB
Large heap - 131072KB
Large heap - 83KB
Overhead/unused - 130989KB
Overhead - 0KB
Howerver、GCホールとは何ですか?
「穴」は、割り当てられた2つの インスタンスの間で使用されていないメモリを表します。ヒープが完全に圧縮されていない場合は、 固定インスタンスまたはガベージコレクタの最適化のために、「ホール」が表示されます。私が知りたいのは何
は次のとおりです。
- 「穴」2つの割り当てられたインスタンスの種類の間で表示されますか?
- どのようなインスタンスが固定されていますか?
- ヒープを圧縮する方法は?
誰かが説明できることを願っています。
の記事を参照してください。 – CodesInChaos
"" Holes "は、割り当てられた2つのインスタンス間で未使用のメモリを表します。ヒープが完全に圧縮されていない場合、固定されたインスタンスまたはガベージコレクタの最適化により" [.NETメモリプロファイラのドキュメントから](http://memprofiler.com/onlinedocs/default.htm?turl=managedheaps.htm) – CodesInChaos
なぜこの質問は非常に多くの人が賞賛していますか?著者の質問は明確ではありません。この編集に基づいて、彼は彼が何について話しているか全く分かりません。 –