#author("2020-10-01T04:34:21+00:00","default:admin","admin")
-[[ASP.NET Core のメモリ管理とガベージコレクション (GC):https://docs.microsoft.com/ja-jp/aspnet/core/performance/memory?view=aspnetcore-3.1]]

*ガベージコレクション [#je5dddfb]
-[[ガベージ コレクションの実行時構成オプション:https://docs.microsoft.com/ja-jp/dotnet/core/run-time-config/garbage-collector]]

**ワークステーションGC・サーバGC [#se72081c]
-[[ワークステーションとサーバーのガベージ コレクション:https://docs.microsoft.com/ja-jp/dotnet/standard/garbage-collection/workstation-server-gc]]

-''ガベージ コレクターは、さまざまなシナリオに対応できるように自動的に調整される''
-ただし、作業負荷の特性に基づいてガベージ コレクションの種類を設定できる

***ワークステーションGC [#l37afaa1]
-コレクションは、ガベージ コレクションをトリガーしたユーザー スレッドで、それと同じ優先順位で実行される
-ユーザー スレッドは一般に通常の優先順位で実行されるため、その場合 (通常の優先順位のスレッドで実行された場合)、ガベージ コレクターの CPU 時間が他のスレッドと競合する
-ネイティブ コードを実行するスレッドは、サーバーまたはワークステーションのガベージ コレクションでは中断されない

-''&color(red){プロセッサが 1 つしかないコンピューターでは、構成設定に関係なく、常にワークステーションのガベージ コレクションが使用される};''

***サーバGC [#z201fc94]
-コレクションは、 THREAD_PRIORITY_HIGHEST の優先順位で実行される複数の専用スレッドで実行される
-ヒープおよびガベージ コレクションを実行するための専用スレッドは CPU ごとに 1 つずつ用意され、複数のヒープのコレクションが同時に行われる
-各ヒープには小さなオブジェクト ヒープと大きなオブジェクト ヒープがあり、どのヒープもユーザー コードからアクセスできる
-異なるヒープのオブジェクトを相互に参照できる
-
複数のガベージ コレクション スレッドが連携して処理を行うため、同じサイズのヒープを処理した場合、サーバーのガベージ コレクションの方がワークステーションのガベージ コレクションよりも高速

-一般に、サーバーのガベージ コレクションの方が、格納されるセグメントのサイズは大きくなる(一般論)

-サーバーのガベージ コレクションでは、リソースが大量に消費されることがある
--たとえば、プロセッサが 4 つのコンピューターで実行されているサーバー GC が 12 個のプロセスで使用されているとします。 
--すべてのプロセスで偶然、同時にガベージを回収すると、互いに干渉することになります。同じプロセッサで 12 のスレッドがスケジュールされるためです。 

-プロセスがアクティブの場合、すべてのプロセスでサーバー GC を使用することはお勧めしません。


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS