2015-01-09 87 views
3

是否可以限制android應用程序的大小? (例如在清單中)Android應用程序運行內存大小限制

案例是:客戶希望應用程序不超過,比如說20 MB。但設備的可用內存是50 MB。該應用程序正在使Webview處於不斷增加大小的活動之一,從而增加了整體應用程序的大小。 所以有可能:當不需要webview(已經設置爲null)和整體內存大小> 30 MB時。 GC被強制調用? 注意:確保其他組件和活動不需要超過5 MB內存。

回答

6

是否可以限制android應用程序的大小? (在清單中說)

不是真的。應用程序的堆限制取決於設備,而不是應用程序。應用程序可以做的唯一一件事就是要求android:largeHeap請求一個較大的堆;沒有辦法要求一個比正常小的堆。

另請注意,您通過NDK進行的分配不計入堆限制。爲此,你完全靠自己。

客戶希望應用程序不被超過,說20 MB

你的客戶是歡迎建立自己的設備或ROM MOD可以強制執行此限制,至少在Dalvik的內部分配/ ART虛擬機。

或者,您的客戶端不應該使用Android,而應該使用其他的東西,比如嵌入式Linux,他們可以更好地控制內存的使用方式。

但設備中的可用內存是50 MB。

設備上可用系統RAM的數量並不直接與應用程序堆堆棧限制相關聯。

當不需要webview(已設置爲空)和整體內存大小> 30 MB時。 GC被強制調用?

歡迎您自己嘗試實施。它通常不會工作,但歡迎您實施它。

一旦虛擬機從操作系統分配內存,它將只在該內存不再使用時纔將該內存返回到操作系統。 Dalvik--在Android 4.4及以下版本上使用的虛擬機 - 並不壓縮堆,因此即使您可能導致某些內存被垃圾收集,也不會減少您的整體堆大小。

另請注意,WebView消耗的某些系統RAM涉及底層的WebKit/Blink庫。據我瞭解,當你第一次使用WebView(這是爲什麼你的第一個WebView可能需要一些時間加載)動態加載。但是這些代碼段可能在流程終止之前不會被釋放。

+0

感謝您的詳細回覆! – vipulfb

相關問題