ASP.NET CoreプロジェクトをVS2017と新しいcsprojにアップグレードしましたが、このオプションがあります。
<PropertyGroup>
<ServerGarbageCollection>true</ServerGarbageCollection>
</PropertyGroup>
サーバーガベージコレクションとは何ですか?適切なドキュメントはありません。 移行ガイド は、それが何であるかを既に知っていることを前提としています。
(正式なドキュメントがない限り、その場合はお知らせください。)
要約:残念ながら、基礎となる多くの技術に関する詳細はドキュメントにありません。ただし、@ PanagiotisKanavosのリンクには、「server gc」に関する重要な部分があります here 。
これは、通常(ワークステーション)と同時(サーバー)のガベージコレクション戦略の違いのようです。基本的に、ワークステーションアプローチでは、多くの極端なケースで問題が発生します。そして、大規模なマルチスレッドシナリオ(ASP Webサーバー)など)は、このような極端なケースの典型的な例です。
並行GCには弱い参照とデフラグの自然な問題があることに注意してください。ただし、それが.NET Core実装に当てはまる場合は、私の知識を超えています。 .NET Coreチームがコードに対して行うことができるすべての種類の改善があり、これはGCメモリマネージャーの設計の領域に入ります。
たぶん、タグ付け部分に使用される同時スレッド数を定義するだけです(ワークステーションのデフォルトは1)。また、最適化などの問題を回避するために、いくつかの修正されたメモリ割り当て戦略が含まれる場合があります。どちらの場合でも、実際のコレクションは本質的にシングルスレッドを実行し、すべての管理対象スレッドを停止する必要があり、CPU速度ではなくメモリ速度によって制限されます。
msdnドキュメント...
https://msdn.Microsoft.com/en-us/library/ms229357(v = vs.110).aspx
共通言語ランタイム(CLR)は、すべてのシステムで利用可能なワークステーションガベージコレクションと、マルチプロセッサシステムで利用可能なサーバーガベージコレクションの2種類のガベージコレクションをサポートしています。この要素を使用して、CLRが実行するガベージコレクションのタイプを制御します。 GCSettings.IsServerGCプロパティを使用して、サーバーガベージコレクションが有効になっているかどうかを判断します。
シングルプロセッサコンピュータの場合、デフォルトのワークステーションガベージコレクションが最速のオプションである必要があります。ワークステーションまたはサーバーのいずれかを2プロセッサコンピューターに使用できます。サーバーガベージコレクションは、3つ以上のプロセッサの最速のオプションである必要があります。
この要素は、アプリケーション構成ファイルでのみ使用できます。マシン構成ファイルにある場合は無視されます。
移行中 の場合、ServerGarbageCollection
はSystem.GC.Server
からマップされます。
<PropertyGroup>
<ServerGarbageCollection>true</ServerGarbageCollection>
</PropertyGroup>
サーバーガベージコレクションとは何ですか?
単純に、.netランタイムに サーバーガベージコレクション を実行するように指示する構成値です。歴史的に これはproject.json
によって管理されていました 。サーバーのガベージコレクションを有効/無効にします。
これはあなたが見つけようとしている公式文書に近いものであり、project.json
にこのオプションを追加することに関する発表です。
https://github.com/aspnet/Announcements/issues/175
同様に、追加の詳細はこちら:
サーバー(複数のプロセッサ)またはワークステーション(1つのプロセッサ)の間でGCを切り替えます。