MemoryBudgetManager 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
此類別是應用程式與程序記憶體預算的用戶端介面。
[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
- 繼承
- 屬性
備註
此類別是應用程式與程序記憶體預算的用戶端介面。 記憶體預算是應用程式或其程序承諾其記憶體需求不會超過某個限制的承諾。 預算並非硬性限制:雖然可以超支,但這很可能導致流程在釋放記憶體時變慢,並跌破預算上限。
預算宣告並非系統對記憶體的請求,宣告也不會影響系統如何分配記憶體給程序。 預算讓應用程式能夠監控自身的資源使用。
根據這些預算追蹤的記憶體使用量包括:
匿名配置,最常見的是 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 |
若應用程式或程序無記憶體限制,則會回傳 |
屬性
| 名稱 | Description |
|---|---|
| Class |
傳回這個 |
| 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 |
|---|---|
| IJavaPeerable.Disposed() |
此類別是應用程式與程序記憶體預算的用戶端介面。 (繼承來源 JavaObject) |
| IJavaPeerable.Finalized() |
此類別是應用程式與程序記憶體預算的用戶端介面。 (繼承來源 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
此類別是應用程式與程序記憶體預算的用戶端介面。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
此類別是應用程式與程序記憶體預算的用戶端介面。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
此類別是應用程式與程序記憶體預算的用戶端介面。 (繼承來源 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
此類別是應用程式與程序記憶體預算的用戶端介面。 (繼承來源 JavaObject) |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
| JavaCast<TResult>(IJavaObject) |
此類別是應用程式與程序記憶體預算的用戶端介面。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |