GC.TryStartNoGCRegion 方法

定義

嘗試在執行關鍵路徑期間,禁止記憶體回收。

多載

TryStartNoGCRegion(Int64, Int64, Boolean)

嘗試在大型物件堆積與小型物件堆積有指定數量記憶體可用時,於執行關鍵路徑期間,禁止記憶體回收,並控制在最初沒有足夠的記憶體可用時,記憶體回收行程是否執行完全封鎖記憶體回收。

TryStartNoGCRegion(Int64, Int64)

嘗試在大型物件堆積與小型物件堆積有指定數量記憶體可用時,於執行關鍵路徑期間,禁止記憶體回收。

TryStartNoGCRegion(Int64, Boolean)

嘗試在有指定數量記憶體可用時,於執行關鍵路徑期間,禁止記憶體回收,並控制在最初沒有足夠的記憶體可用時,記憶體回收行程是否執行完全封鎖記憶體回收。

TryStartNoGCRegion(Int64)

嘗試在有指定數量記憶體可用時,於執行關鍵路徑期間,禁止記憶體回收。

備註

重要

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

TryStartNoGCRegion(Int64, Int64, Boolean)

來源:
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

totalSize 中要用於大型物件堆積 (LOH) 配置的位元組數目。

disallowFullBlockingGC
Boolean

true 表示如果記憶體回收行程最初無法在小型物件堆積 (SOH) 及 LOH 上配置指定的記憶體,則省略完全封鎖記憶體回收;否則為 false

傳回

如果執行階段可以認可所需的記憶體數量且記憶體回收行程可以進入無 GC 區域延遲模式,則為 true;否則為 false

屬性

例外狀況

totalSize - lohSize 超過暫時區段大小。

處理序處於無 GC 區域延遲模式。

備註

方法 TryStartNoGCRegion(Int64, Int64, Boolean) 會嘗試將垃圾收集行程置於沒有 GC 區域延遲模式中,以在應用程式執行重要的程式碼區域時不允許垃圾收集。 如果執行時間一開始無法配置要求的記憶體數量,且 disallowFullBlockingGC 引數為 false ,垃圾收集行程會在嘗試釋放其他記憶體時執行完整封鎖垃圾收集;否則,配置會失敗,而且 方法會傳 false 回 。 如果垃圾收集行程能夠配置 lohSize 給 LOH 和 totalSize - lohSize 小型物件堆積,則不會進入 GC 區域延遲模式, (SOH) 。

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

如果一開始沒有足夠的記憶體可供使用,則設定 disallowFullBlockingGCtrue 以防止完全封鎖垃圾收集:一個系統可以呼叫此方法,並在傳回 true 時將本身回報為已準備好接受要求,並在傳回 false 時讓負載平衡器將要求重新導向至其他系統。 然後,當它未透過呼叫 Collect(Int32, GCCollectionMode, Boolean, Boolean) 方法來處理要求時,它可以執行完整的封鎖垃圾收集。

重要

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

您可以呼叫 EndNoGCRegion 方法來結束無 GC 區域延遲模式。

另請參閱

適用於

TryStartNoGCRegion(Int64, Int64)

來源:
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

totalSize 中要用於大型物件堆積 (LOH) 配置的位元組數目。

傳回

如果執行階段可以認可所需的記憶體數量且記憶體回收行程可以進入無 GC 區域延遲模式,則為 true;否則為 false

屬性

例外狀況

totalSize - lohSize 超過暫時區段大小。

處理序處於無 GC 區域延遲模式。

備註

方法 TryStartNoGCRegion(Int64, Int64) 會嘗試將垃圾收集行程置於沒有 GC 區域延遲模式中,以在應用程式執行重要的程式碼區域時不允許垃圾收集。 如果執行時間一開始無法配置要求的記憶體數量,垃圾收集行程會在嘗試釋放額外的記憶體時執行完整封鎖垃圾收集。 如果垃圾收集行程能夠配置 lohSize 給 LOH 和 totalSize - lohSize 小型物件堆積,則不會進入 GC 區域延遲模式, (SOH) 。

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

重要

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

您可以呼叫 EndNoGCRegion 方法來結束無 GC 區域延遲模式。

另請參閱

適用於

TryStartNoGCRegion(Int64, Boolean)

來源:
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

傳回

如果執行階段可以認可所需的記憶體數量且記憶體回收行程可以進入無 GC 區域延遲模式,則為 true;否則為 false

屬性

例外狀況

totalSize 超過暫時區段的大小。

處理序處於無 GC 區域延遲模式。

備註

方法 TryStartNoGCRegion(Int64, Boolean) 會嘗試將垃圾收集行程置於沒有 GC 區域延遲模式中,以在應用程式執行重要的程式碼區域時不允許垃圾收集。 如果執行時間一開始無法配置要求的記憶體數量,且 disallowFullBlockingGC 引數為 false ,垃圾收集行程會在嘗試釋放其他記憶體時執行完整封鎖垃圾收集;否則,配置會失敗,而且 方法會傳 false 回 。 如果垃圾收集行程能夠配置所需的記憶體數量,則垃圾收集行程不會進入任何 GC 區域延遲模式,在此案例中實際上是 2 * totalSize (它會嘗試 totalSize 配置小型物件堆積和 totalSize 大型物件堆積) 。

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

如果一開始沒有足夠的記憶體可供使用,則設定 disallowFullBlockingGCtrue 以防止完全封鎖垃圾收集:一個系統可以呼叫此方法,並在傳回 true 時將本身回報為已準備好接受要求,並在傳回 false 時讓負載平衡器將要求重新導向至其他系統。 然後,當它未透過呼叫 Collect(Int32, GCCollectionMode, Boolean, Boolean) 方法來處理要求時,它可以執行完整的封鎖垃圾收集。

重要

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

您可以呼叫 EndNoGCRegion 方法來結束無 GC 區域延遲模式。

另請參閱

適用於

TryStartNoGCRegion(Int64)

來源:
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

在不觸發記憶體回收的情況下,要配置的記憶體數量 (以位元組為單位)。 該值必須小於或等於暫時區段的大小。 如需暫時區段大小的資訊,請參閱記憶體回收的基本概念一文中的<暫時層代和區段>一節。

傳回

如果執行階段可以認可所需的記憶體數量且記憶體回收行程可以進入無 GC 區域延遲模式,則為 true;否則為 false

屬性

例外狀況

totalSize 超過暫時區段的大小。

處理序處於無 GC 區域延遲模式。

備註

方法 TryStartNoGCRegion(Int64) 會嘗試將垃圾收集行程置於沒有 GC 區域延遲模式中,以在應用程式執行重要的程式碼區域時不允許垃圾收集。 如果執行時間一開始無法配置要求的記憶體數量,垃圾收集行程會在嘗試釋放額外的記憶體時執行完整封鎖垃圾收集。 如果垃圾收集行程能夠配置所需的記憶體數量,則垃圾收集行程不會進入任何 GC 區域延遲模式,在此情況下實際上是 2 * totalSize 個位元組, (它會嘗試 totalSize 為小型物件堆積配置位元組,並為 totalSize 大型物件堆積配置位元組) 。

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

重要

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

您可以呼叫 EndNoGCRegion 方法來結束無 GC 區域延遲模式。

另請參閱

適用於