語言

MemoryBudgetManager 類別

定義

此類別是應用程式與程序記憶體預算的用戶端介面。

[Android.Runtime.Register("android/app/MemoryBudgetManager", ApiSince=37, DoNotGenerateAcw=true)]
public sealed class MemoryBudgetManager : Java.Lang.Object
[<Android.Runtime.Register("android/app/MemoryBudgetManager", ApiSince=37, DoNotGenerateAcw=true)>]
type MemoryBudgetManager = class
    inherit Object
繼承
MemoryBudgetManager
屬性

備註

此類別是應用程式與程序記憶體預算的用戶端介面。 記憶體預算是應用程式或其程序承諾其記憶體需求不會超過某個限制的承諾。 預算並非硬性限制:雖然可以超支,但這很可能導致流程在釋放記憶體時變慢,並跌破預算上限。

預算宣告並非系統對記憶體的請求,宣告也不會影響系統如何分配記憶體給程序。 預算讓應用程式能夠監控自身的資源使用。

根據這些預算追蹤的記憶體使用量包括:

匿名配置,最常見的是 Java 堆積和原生堆積。

檔案後援頁面(例如將檔案映射到記憶體或由程序快取的檔案)。

在程序間共享記憶體(例如共享記憶體區段)的情況下,使用量會計費給第一個映射或分配該程序。

追蹤記憶體使用量不包含原生圖形緩衝區或 DMA-BUF。

除了透過此介面管理的預算外,記憶體還有兩組限制。 系統有限制和清單預算(透過 <清單中的記憶體預算> 宣告)。 透過此介面管理的預算不得超過系統或清單的限制。 任何嘗試超過系統或顯示限制的行為都會導致 IllegalArgumentException。 然而,透過此介面設定的預算可以隨時調整,無論是增加或減少,只要新值不超過系統或清單的限制。

預算必須是正向的;嘗試設定零或負數的預算會導致 IllegalArgumentException。

套件(應用程式)預算會作為一個群組套用到應用程式中的所有程序(具體來說,所有在應用程式 UID 下執行的程序)。 若應用程式與其他應用程式共用 UID,預算則適用於該共享 UID 下所有執行的程序的總使用量。

流程預算適用於單一流程。 可以對流程設定大預算,對整體套件設定小預算;套件預算佔主導地位,龐大的流程預算則無關緊要。 這不是錯誤。

此類別提供的主要介面包括:記憶體預算配置;setPackageBudgetBytes(long) / clearPackageBudget() - 設定或清除應用程式的記憶體預算;setProcessBudgetBytes(long) / clearProcessBudget() - 設定或清除呼叫程序的記憶體預算;記憶體預算查詢:getPackageBudgetBytes() - 回傳應用程式目前的預算;getProcessBudgetBytes() - 回傳呼叫程序的當前預算;記憶體使用查詢:getPackageCurrentUsageBytes() - 回傳應用程式套件中所有程序的總體記憶體使用量;getProcessCurrentUsageBytes() - 回傳呼叫者特定程序的記憶體使用量;Over-Budget 事件監控:OnOverBudgetListener - 當記憶體使用超過預算門檻時會通知回調介面;registerPackageOverBudgetListener(Looper, OnOverBudgetListener) / unregisterPackageOverBudgetListener(OnOverBudgetListener)- 為套件層級預算違規註冊或取消註冊監聽者;registerProcessOverBudgetListener(Looper, OnOverBudgetListener)/unregisterProcessOverBudgetListener(OnOverBudgetListener)-為程序層級預算違規註冊或取消註冊監聽者。

Android 參考資料。android.app.MemoryBudgetManager

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

欄位

名稱 Description
LimitIsDisabled

若應用程式或程序無記憶體限制,則會回傳#getPackageBudgetBytes()#getProcessBudgetBytes()此值。

屬性

名稱 Description
Class

傳回這個 Object的運行時間類別。

(繼承來源 Object)
Handle

基礎Android實例的句柄。

(繼承來源 Object)
JniIdentityHashCode

取得由互通執行時指派給此 Java 對等端的身份雜湊碼。

(繼承來源 Object)
JniManagedPeerState

此類別是應用程式與程序記憶體預算的用戶端介面。

(繼承來源 JavaObject)
JniPeerMembers

取得用於存取此 Java 綁定成員的 JNI 元資料。

PackageBudgetBytes

退還來電者申請的預算。 -或- 設定呼叫者應用程式的記憶體預算。

PackageCurrentUsageBytes

回傳呼叫者應用程式 UID 下所有執行的程序的總體記憶體使用量。

PeerReference

取得這個 Java 節點的 JNI 物件參考。

(繼承來源 Object)
ProcessBudgetBytes

回傳來電者流程的預算。 -或- 設定呼叫者程序的記憶體預算。

ProcessCurrentUsageBytes

回傳呼叫者程序目前的記憶體使用情況。

ThresholdClass

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

(繼承來源 Object)
ThresholdType

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

(繼承來源 Object)

方法

名稱 Description
ClearPackageBudget()

若有,則移除來電者應用程式的套件預算。

ClearProcessBudget()

若有,則移除來電者流程的流程預算。

Clone()

建立並傳回這個 對象的複本。

(繼承來源 Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

此類別是應用程式與程序記憶體預算的用戶端介面。

(繼承來源 JavaObject)
Dispose()

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
Dispose(Boolean)

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
DisposeUnlessReferenced()

此類別是應用程式與程序記憶體預算的用戶端介面。

(繼承來源 JavaObject)
Equals(Object)

此類別是應用程式與程序記憶體預算的用戶端介面。

(繼承來源 JavaObject)
Equals(Object)

指出其他物件是否「等於」這個物件。

(繼承來源 Object)
GetHashCode()

傳回此物件的雜湊碼值。

(繼承來源 Object)
JavaFinalize()
已淘汰.

當垃圾收集決定不再參考物件時,垃圾收集行程在 物件上呼叫。

(繼承來源 Object)
Notify()

喚醒正在等候此物件監視器的單一線程。

(繼承來源 Object)
NotifyAll()

喚醒正在等候此物件監視器的所有線程。

(繼承來源 Object)
RegisterPackageOverBudgetListener(Looper, MemoryBudgetManager+IOnOverBudgetListener)

註冊時若呼叫者應用程式超出其套件預算,將收到通知。

RegisterProcessOverBudgetListener(Looper, MemoryBudgetManager+IOnOverBudgetListener)

註冊時若呼叫者的程序超過其程序預算,將被通知。

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

此類別是應用程式與程序記憶體預算的用戶端介面。

(繼承來源 JavaObject)
ToArray<T>()

從這個 Java 陣列包裝器建立一個受管理陣列。

(繼承來源 Object)
ToString()

傳回物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

將此 Java 節點從互通執行時中取消註冊。

(繼承來源 Object)
UnregisterPackageOverBudgetListener(MemoryBudgetManager+IOnOverBudgetListener)

取消註冊一個包預算監聽器。

UnregisterProcessOverBudgetListener(MemoryBudgetManager+IOnOverBudgetListener)

取消註冊程序預算監聽器。

Wait()

讓目前線程等候直到喚醒為止,通常是藉由em <notified/em>或<em>interrupted</em> 來喚醒它。<>

(繼承來源 Object)
Wait(Int64, Int32)

讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。

(繼承來源 Object)
Wait(Int64)

讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。

(繼承來源 Object)

明確介面實作

名稱 Description
IJavaPeerable.Disposed()

此類別是應用程式與程序記憶體預算的用戶端介面。

(繼承來源 JavaObject)
IJavaPeerable.Finalized()

此類別是應用程式與程序記憶體預算的用戶端介面。

(繼承來源 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

此類別是應用程式與程序記憶體預算的用戶端介面。

(繼承來源 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

此類別是應用程式與程序記憶體預算的用戶端介面。

(繼承來源 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

此類別是應用程式與程序記憶體預算的用戶端介面。

(繼承來源 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

此類別是應用程式與程序記憶體預算的用戶端介面。

(繼承來源 JavaObject)

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

此類別是應用程式與程序記憶體預算的用戶端介面。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於