GC.TryStartNoGCRegion 方法

定義

嘗試在執行關鍵路徑時禁止垃圾回收。

多載

名稱 Description
TryStartNoGCRegion(Int64, Int64, Boolean)

嘗試在執行關鍵路徑時,若大物件堆與小物件堆皆有指定記憶體容量,則禁止垃圾回收;並控制垃圾回收器在初始記憶體不足時是否進行完整的區塊垃圾回收。

TryStartNoGCRegion(Int64, Int64)

嘗試在執行關鍵路徑時,若大物件堆與小物件堆均有指定記憶體容量,則禁止垃圾回收。

TryStartNoGCRegion(Int64, Boolean)

嘗試在執行關鍵路徑時,若記憶體容量達到指定,則禁止垃圾回收,並控制若初始記憶體不足,垃圾回收器是否會進行完整的阻塞式垃圾回收。

TryStartNoGCRegion(Int64)

嘗試在執行關鍵路徑時,若有指定記憶體量,則禁止垃圾回收。

備註

Important

您無法巢狀呼叫 TryStartNoGCRegion 方法,而且只有在運行時間目前沒有 GC 區域延遲模式時,才應該呼叫 EndNoGCRegion 方法。 換句話說,您不應該多次呼叫 TryStartNoGCRegion (在第一個方法呼叫之後,後續呼叫不會成功),而且您不應該預期呼叫 EndNoGCRegion 成功,只是因為第一次呼叫 TryStartNoGCRegion 成功。

TryStartNoGCRegion(Int64, Int64, Boolean)

來源:
GC.CoreCLR.cs
來源:
GC.CoreCLR.cs
來源:
GC.CoreCLR.cs
來源:
GC.CoreCLR.cs
來源:
GC.CoreCLR.cs

嘗試在執行關鍵路徑時,若大物件堆與小物件堆皆有指定記憶體容量,則禁止垃圾回收;並控制垃圾回收器在初始記憶體不足時是否進行完整的區塊垃圾回收。

public:
 static bool TryStartNoGCRegion(long totalSize, long lohSize, bool disallowFullBlockingGC);
public static bool TryStartNoGCRegion(long totalSize, long lohSize, bool disallowFullBlockingGC);
[System.Security.SecurityCritical]
public static bool TryStartNoGCRegion(long totalSize, long lohSize, bool disallowFullBlockingGC);
static member TryStartNoGCRegion : int64 * int64 * bool -> bool
[<System.Security.SecurityCritical>]
static member TryStartNoGCRegion : int64 * int64 * bool -> bool
Public Shared Function TryStartNoGCRegion (totalSize As Long, lohSize As Long, disallowFullBlockingGC As Boolean) As Boolean

參數

totalSize
Int64

指在不觸發垃圾回收的情況下,分配記憶體的位元組數量。 totalSize - lohSize 必須小於或等於短暫片段的大小。 關於臨時區段大小的資訊,請參閱 《垃圾回收基礎 》文章中的「短暫世代與區段」章節。

lohSize
Int64

用於大型物件堆(LOH)分配的位元組 totalSize 數。

disallowFullBlockingGC
Boolean

true若垃圾回收器一開始無法在小型物件堆積(SOH)和LOH上分配指定記憶體,則省略完整的阻塞垃圾回收;否則,。 false

傳回

true若執行時能提交所需記憶體,且垃圾回收器能進入無 GC 區域延遲模式;否則,。 false

屬性

例外狀況

totalSize - lohSize 超過短暫節段的尺寸。

這個程序已經處於無 GC 區域延遲模式。

備註

TryStartNoGCRegion(Int64, Int64, Boolean) 方法嘗試將垃圾回收置於無 GC 區域延遲模式,該模式在應用程式執行關鍵程式碼區域時不允許垃圾回收。 如果執行時無法初始分配請求的記憶體量,且 disallowFullBlockingGC 參數為 false,垃圾回收器會執行完整的區塊垃圾回收,試圖釋放額外記憶體;否則配置失敗,方法返回 false。 如果垃圾回收器能為 LOH 和lohSizetotalSize - 小物件堆(SOH)配置lohSize,則進入無 GC 區域延遲模式。

lohSize 必須足夠大以處理 LOH 關鍵路徑中所有記憶體配置,且 totalSize - lohSize 必須足夠大以處理 SOH 關鍵路徑中所有記憶體配置。 這包括應用程式的分配,以及執行時代表應用程式所做的分配。

設定 disallowFullBlockingGCtrue 以防止初始記憶體不足時的完全阻塞垃圾回收,在負載平衡情境中最為有用:一個系統可以呼叫此方法,並在返回 true時回報自己已準備好接受請求,若返回 false則由負載平衡器將請求重新導向其他系統。 當它不處理請求時,就能透過呼叫 Collect(Int32, GCCollectionMode, Boolean, Boolean) 該方法進行完整的阻塞垃圾回收。

Important

您無法巢狀呼叫 TryStartNoGCRegion 方法,而且只有在運行時間目前沒有 GC 區域延遲模式時,才應該呼叫 EndNoGCRegion 方法。 換句話說,您不應該多次呼叫 TryStartNoGCRegion (在第一個方法呼叫之後,後續呼叫不會成功),而且您不應該預期呼叫 EndNoGCRegion 成功,只是因為第一次呼叫 TryStartNoGCRegion 成功。

你要透過呼叫 EndNoGCRegion 該方法來退出無 GC 區域延遲模式。

另請參閱

適用於

TryStartNoGCRegion(Int64, Int64)

來源:
GC.CoreCLR.cs
來源:
GC.CoreCLR.cs
來源:
GC.CoreCLR.cs
來源:
GC.CoreCLR.cs
來源:
GC.CoreCLR.cs

嘗試在執行關鍵路徑時,若大物件堆與小物件堆均有指定記憶體容量,則禁止垃圾回收。

public:
 static bool TryStartNoGCRegion(long totalSize, long lohSize);
public static bool TryStartNoGCRegion(long totalSize, long lohSize);
[System.Security.SecurityCritical]
public static bool TryStartNoGCRegion(long totalSize, long lohSize);
static member TryStartNoGCRegion : int64 * int64 -> bool
[<System.Security.SecurityCritical>]
static member TryStartNoGCRegion : int64 * int64 -> bool
Public Shared Function TryStartNoGCRegion (totalSize As Long, lohSize As Long) As Boolean

參數

totalSize
Int64

指在不觸發垃圾回收的情況下,分配記憶體的位元組數量。 totalSize - lohSize 必須小於或等於短暫片段的大小。 關於臨時區段大小的資訊,請參閱 《垃圾回收基礎 》文章中的「短暫世代與區段」章節。

lohSize
Int64

用於大型物件堆(LOH)分配的位元組 totalSize 數。

傳回

true若執行時能提交所需記憶體,且垃圾回收器能進入無 GC 區域延遲模式;否則,。 false

屬性

例外狀況

totalSize - lohSize 超過短暫節段的尺寸。

這個程序已經處於無 GC 區域延遲模式。

備註

TryStartNoGCRegion(Int64, Int64) 方法嘗試將垃圾回收置於無 GC 區域延遲模式,該模式在應用程式執行關鍵程式碼區域時不允許垃圾回收。 若執行時無法初始分配所需記憶體量,垃圾回收器會執行完整的區塊垃圾回收,試圖釋放額外記憶體。 如果垃圾回收器能為 LOH 和lohSizetotalSize - 小物件堆(SOH)配置lohSize,則進入無 GC 區域延遲模式。

lohSize 必須足夠大以處理 LOH 關鍵路徑中所有記憶體配置,且 totalSize - lohSize 必須足夠大以處理 SOH 關鍵路徑中所有記憶體配置。 這包括應用程式的分配,以及執行時代表應用程式所做的分配。

Important

您無法巢狀呼叫 TryStartNoGCRegion 方法,而且只有在運行時間目前沒有 GC 區域延遲模式時,才應該呼叫 EndNoGCRegion 方法。 換句話說,您不應該多次呼叫 TryStartNoGCRegion (在第一個方法呼叫之後,後續呼叫不會成功),而且您不應該預期呼叫 EndNoGCRegion 成功,只是因為第一次呼叫 TryStartNoGCRegion 成功。

你要透過呼叫 EndNoGCRegion 該方法來退出無 GC 區域延遲模式。

另請參閱

適用於

TryStartNoGCRegion(Int64, Boolean)

來源:
GC.CoreCLR.cs
來源:
GC.CoreCLR.cs
來源:
GC.CoreCLR.cs
來源:
GC.CoreCLR.cs
來源:
GC.CoreCLR.cs

嘗試在執行關鍵路徑時,若記憶體容量達到指定,則禁止垃圾回收,並控制若初始記憶體不足,垃圾回收器是否會進行完整的阻塞式垃圾回收。

public:
 static bool TryStartNoGCRegion(long totalSize, bool disallowFullBlockingGC);
public static bool TryStartNoGCRegion(long totalSize, bool disallowFullBlockingGC);
[System.Security.SecurityCritical]
public static bool TryStartNoGCRegion(long totalSize, bool disallowFullBlockingGC);
static member TryStartNoGCRegion : int64 * bool -> bool
[<System.Security.SecurityCritical>]
static member TryStartNoGCRegion : int64 * bool -> bool
Public Shared Function TryStartNoGCRegion (totalSize As Long, disallowFullBlockingGC As Boolean) As Boolean

參數

totalSize
Int64

指在不觸發垃圾回收的情況下,分配記憶體的位元組數量。 它必須小於或等於短暫區段的大小。 關於臨時區段大小的資訊,請參閱 《垃圾回收基礎 》文章中的「短暫世代與區段」章節。

disallowFullBlockingGC
Boolean

true若垃圾回收器最初無法分配totalSize位元組,則省略完整的阻塞垃圾回收;否則, false

傳回

true若執行時能提交所需記憶體,且垃圾回收器能進入無 GC 區域延遲模式;否則,。 false

屬性

例外狀況

totalSize 超過短暫節段的尺寸。

這個程序已經處於無 GC 區域延遲模式。

備註

TryStartNoGCRegion(Int64, Boolean) 方法嘗試將垃圾回收置於無 GC 區域延遲模式,該模式在應用程式執行關鍵程式碼區域時不允許垃圾回收。 如果執行時無法初始分配請求的記憶體量,且 disallowFullBlockingGC 參數為 false,垃圾回收器會執行完整的區塊垃圾回收,試圖釋放額外記憶體;否則配置失敗,方法返回 false。 如果垃圾回收器能分配所需的記憶體量,即 2 * totalSize (嘗試分配 totalSize 小物件堆與 totalSize 大型物件堆積),則進入無 GC 區域延遲模式。

totalSize 必須足夠大,以處理關鍵路徑中所有的記憶體配置。 這包括應用程式的分配,以及執行時代表應用程式所做的分配。

設定 disallowFullBlockingGCtrue 以防止初始記憶體不足時的完全阻塞垃圾回收,在負載平衡情境中最為有用:一個系統可以呼叫此方法,並在返回 true時回報自己已準備好接受請求,若返回 false則由負載平衡器將請求重新導向其他系統。 當它不處理請求時,就能透過呼叫 Collect(Int32, GCCollectionMode, Boolean, Boolean) 該方法進行完整的阻塞垃圾回收。

Important

您無法巢狀呼叫 TryStartNoGCRegion 方法,而且只有在運行時間目前沒有 GC 區域延遲模式時,才應該呼叫 EndNoGCRegion 方法。 換句話說,您不應該多次呼叫 TryStartNoGCRegion (在第一個方法呼叫之後,後續呼叫不會成功),而且您不應該預期呼叫 EndNoGCRegion 成功,只是因為第一次呼叫 TryStartNoGCRegion 成功。

你要透過呼叫 EndNoGCRegion 該方法來退出無 GC 區域延遲模式。

另請參閱

適用於

TryStartNoGCRegion(Int64)

來源:
GC.CoreCLR.cs
來源:
GC.CoreCLR.cs
來源:
GC.CoreCLR.cs
來源:
GC.CoreCLR.cs
來源:
GC.CoreCLR.cs

嘗試在執行關鍵路徑時,若有指定記憶體量,則禁止垃圾回收。

public:
 static bool TryStartNoGCRegion(long totalSize);
public static bool TryStartNoGCRegion(long totalSize);
[System.Security.SecurityCritical]
public static bool TryStartNoGCRegion(long totalSize);
static member TryStartNoGCRegion : int64 -> bool
[<System.Security.SecurityCritical>]
static member TryStartNoGCRegion : int64 -> bool
Public Shared Function TryStartNoGCRegion (totalSize As Long) As Boolean

參數

totalSize
Int64

指在不觸發垃圾回收的情況下,分配記憶體的位元組數量。 它必須小於或等於短暫區段的大小。 關於臨時區段大小的資訊,請參閱 《垃圾回收基礎 》文章中的「短暫世代與區段」章節。

傳回

true若執行時能提交所需記憶體,且垃圾回收器能進入無 GC 區域延遲模式;否則,。 false

屬性

例外狀況

totalSize 超過短暫節段的尺寸。

這個程序已經處於無 GC 區域延遲模式。

備註

TryStartNoGCRegion(Int64) 方法嘗試將垃圾回收置於無 GC 區域延遲模式,該模式在應用程式執行關鍵程式碼區域時不允許垃圾回收。 若執行時無法初始分配所需記憶體量,垃圾回收器會執行完整的區塊垃圾回收,試圖釋放額外記憶體。 如果垃圾回收器能分配所需的記憶體量,實際上是 2 * totalSize 位元組(嘗試分配 totalSize 位元組給小型物件堆積和 totalSize 大物件堆積位元組),則會進入無 GC 區域延遲模式。

totalSize 必須足夠大,以處理關鍵路徑中所有的記憶體配置。 這包括應用程式的分配,以及執行時代表應用程式所做的分配。

Important

您無法巢狀呼叫 TryStartNoGCRegion 方法,而且只有在運行時間目前沒有 GC 區域延遲模式時,才應該呼叫 EndNoGCRegion 方法。 換句話說,您不應該多次呼叫 TryStartNoGCRegion (在第一個方法呼叫之後,後續呼叫不會成功),而且您不應該預期呼叫 EndNoGCRegion 成功,只是因為第一次呼叫 TryStartNoGCRegion 成功。

你要透過呼叫 EndNoGCRegion 該方法來退出無 GC 區域延遲模式。

另請參閱

適用於