GC.TryStartNoGCRegion 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
嘗試在執行關鍵路徑期間,禁止記憶體回收。
多載
TryStartNoGCRegion(Int64, Int64, Boolean) |
嘗試在大型物件堆積與小型物件堆積有指定數量記憶體可用時,於執行關鍵路徑期間,禁止記憶體回收,並控制在最初沒有足夠的記憶體可用時,記憶體回收行程是否執行完全封鎖記憶體回收。 |
TryStartNoGCRegion(Int64, Int64) |
嘗試在大型物件堆積與小型物件堆積有指定數量記憶體可用時,於執行關鍵路徑期間,禁止記憶體回收。 |
TryStartNoGCRegion(Int64, Boolean) |
嘗試在有指定數量記憶體可用時,於執行關鍵路徑期間,禁止記憶體回收,並控制在最初沒有足夠的記憶體可用時,記憶體回收行程是否執行完全封鎖記憶體回收。 |
TryStartNoGCRegion(Int64) |
嘗試在有指定數量記憶體可用時,於執行關鍵路徑期間,禁止記憶體回收。 |
備註
重要
您無法巢狀呼叫 TryStartNoGCRegion 方法,而且只有在執行時間目前沒有 GC 區域延遲模式時,才應該呼叫 EndNoGCRegion 方法。 換句話說,您不應該在第一次方法呼叫之後 (多次呼叫 TryStartNoGCRegion ,後續呼叫將不會成功) ,而且您不應該預期 EndNoGCRegion 呼叫只會因為第一次呼叫 TryStartNoGCRegion 成功而成功。
TryStartNoGCRegion(Int64, Int64, Boolean)
嘗試在大型物件堆積與小型物件堆積有指定數量記憶體可用時,於執行關鍵路徑期間,禁止記憶體回收,並控制在最初沒有足夠的記憶體可用時,記憶體回收行程是否執行完全封鎖記憶體回收。
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 關鍵路徑中發生的所有記憶體配置。 這包括應用程式的配置,以及執行時間代表應用程式所做的配置。
如果一開始沒有足夠的記憶體可供使用,則設定 disallowFullBlockingGC
為 true
以防止完全封鎖垃圾收集:一個系統可以呼叫此方法,並在傳回 true
時將本身回報為已準備好接受要求,並在傳回 false
時讓負載平衡器將要求重新導向至其他系統。 然後,當它未透過呼叫 Collect(Int32, GCCollectionMode, Boolean, Boolean) 方法來處理要求時,它可以執行完整的封鎖垃圾收集。
重要
您無法巢狀呼叫 TryStartNoGCRegion 方法,而且只有在執行時間目前沒有 GC 區域延遲模式時,才應該呼叫 EndNoGCRegion 方法。 換句話說,您不應該在第一次方法呼叫之後 (多次呼叫 TryStartNoGCRegion ,後續呼叫將不會成功) ,而且您不應該預期 EndNoGCRegion 呼叫只會因為第一次呼叫 TryStartNoGCRegion 成功而成功。
您可以呼叫 EndNoGCRegion 方法來結束無 GC 區域延遲模式。
另請參閱
適用於
TryStartNoGCRegion(Int64, Int64)
嘗試在大型物件堆積與小型物件堆積有指定數量記憶體可用時,於執行關鍵路徑期間,禁止記憶體回收。
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)
嘗試在有指定數量記憶體可用時,於執行關鍵路徑期間,禁止記憶體回收,並控制在最初沒有足夠的記憶體可用時,記憶體回收行程是否執行完全封鎖記憶體回收。
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
必須夠大,才能處理在關鍵路徑中發生的所有記憶體配置。 這包括應用程式的配置,以及執行時間代表應用程式所做的配置。
如果一開始沒有足夠的記憶體可供使用,則設定 disallowFullBlockingGC
為 true
以防止完全封鎖垃圾收集:一個系統可以呼叫此方法,並在傳回 true
時將本身回報為已準備好接受要求,並在傳回 false
時讓負載平衡器將要求重新導向至其他系統。 然後,當它未透過呼叫 Collect(Int32, GCCollectionMode, Boolean, Boolean) 方法來處理要求時,它可以執行完整的封鎖垃圾收集。
重要
您無法巢狀呼叫 TryStartNoGCRegion 方法,而且只有在執行時間目前沒有 GC 區域延遲模式時,才應該呼叫 EndNoGCRegion 方法。 換句話說,您不應該在第一次方法呼叫之後 (多次呼叫 TryStartNoGCRegion ,後續呼叫將不會成功) ,而且您不應該預期 EndNoGCRegion 呼叫只會因為第一次呼叫 TryStartNoGCRegion 成功而成功。
您可以呼叫 EndNoGCRegion 方法來結束無 GC 區域延遲模式。
另請參閱
適用於
TryStartNoGCRegion(Int64)
嘗試在有指定數量記憶體可用時,於執行關鍵路徑期間,禁止記憶體回收。
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 區域延遲模式。