日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Android應用開發中largeHeap屬性的妙用與潛在風險

來源: 責編: 時間:2024-04-25 08:57:27 187觀看
導讀largeHeap是Android開發中的一個屬性,主要作用是向系統請求為App進程的虛擬機分配更大的堆內存空間。在manifest文件的application節點或activity節點中使用。largeHeap屬性設置為true時,應用可以使用更大的堆內存。具

largeHeap是Android開發中的一個屬性,主要作用是向系統請求為App進程的虛擬機分配更大的堆內存空間。在manifest文件的application節點或activity節點中使用。largeHeap屬性設置為true時,應用可以使用更大的堆內存。具體能為虛擬機分配多大的堆內存,取決于當前設備的相關配置,由dalvik.vm.heapsize后面的配置大小限制。9iZ28資訊網——每日最新資訊28at.com

在Android開發中,官方建議開發者應努力減少內存的使用,采用回收和復用的方法,而不是通過增大內存來解決內存問題。當內存過大時,每次垃圾回收(gc)的時間也會變長,可能導致性能下降。9iZ28資訊網——每日最新資訊28at.com

largeHeap具體分配大小

largeHeap屬性本身并不直接指定一個具體的內存大小。實際可以看做是一個用于向系統請求為應用進程分配更大的堆內存空間標志。具體能為虛擬機分配多大的堆內存,取決于當前設備的配置和系統的內存管理策略。9iZ28資訊網——每日最新資訊28at.com

在Android設備中,每個應用都會有一個內存最大值的限制。在應用的manifest文件中為某個activity或整個應用設置了largeHeap="true"后,這個應用或activity可以嘗試使用比默認限制更大的堆內存。“更大”的堆內存具體有多大,并不是固定的,受到設備總內存、其他應用和系統服務的內存需求,以及Android版本和廠商定制等因素的影響。9iZ28資訊網——每日最新資訊28at.com

獲取當前應用可以使用的最大堆內存大小方法:9iZ28資訊網——每日最新資訊28at.com

//如果largeHeap屬性被設置為true,將返回一個比默認情況下更大的值。Runtime.getRuntime().maxMemory()//獲得應用正常情況下內存的大小ActivityManager.getMemoryClass();//獲得開啟largeHeap最大的內存大小ActivityManager.getLargeMemoryClass();

在/system/build.prop文件中,可以找到與內存管理相關的設置,如dalvik.vm.heapsize和dalvik.vm.heapgrowthlimit。定義了應用進程堆內存的默認大小和增長限制。9iZ28資訊網——每日最新資訊28at.com

通過adb shell查看:9iZ28資訊網——每日最新資訊28at.com

cat /system/build.prop

圖片圖片9iZ28資訊網——每日最新資訊28at.com

  • 「dalvik.vm.heapstartsize=8m」 相當于Java虛擬機的-Xms配置,用來設置堆內存的初始大小。
  • 「dalvik.vm.heapgrowthlimit=192m」 相當于虛擬機的-XX:HeapGrowthLimit配置,用來設置一個標準的應用的最大堆內存大小。一個標準的應用就是沒有使用android:largeHeap屬性的應用。
  • 「dalvik.vm.heapsize=512m」 相當于虛擬機的-Xmx配置,設置了使用android:largeHeap的應用的最大堆內存大小。
  • 「dalvik.vm.heaptargetutilizatinotallow=0.75」 相當于虛擬機的-XX:HeapTargetUtilization,用來設置當前理想的堆內存利用率。取值位于0與1之間,當GC進行完垃圾回收之后,Dalvik的堆內存會進行相應的調整,通常結果是當前存活的對象的大小與堆內存大小做除法,得到的值為這個選項的設置,即這里的0.75。注意,這只是一個參考值,Dalvik虛擬機也可以忽略此設置。
  • 「dalvik.vm.heapminfree=2m與dalvik.vm.heapmaxfree=8m」 前者對應的是-XX:HeapMinFree配置,用來設置單次堆內存調整的最小值。后者對應的是-XX:HeapMaxFree配置,用來設置單次堆內存調整的最大值。通常情況下,還需要結合上面的-XX:HeapTargetUtilization的值,才能確定內存調整時,需要調整的大小。

使用largeHeap屬性弊端

largeHeap會增加應用的內存使用。雖然可以幫助解決某些OutOfMemoryError(OOM)的問題,但也可能導致系統垃圾回收(GC)的時間變長。垃圾回收是Android系統用于清理不再使用的內存的過程,當堆內存變得更大時,這個過程可能需要更長的時間。可能導致應用在執行某些任務時變得卡頓,尤其是在進行復雜的UI操作時,如RecyclerView的滑動可能會變得異常緩慢。9iZ28資訊網——每日最新資訊28at.com

過度使用largeHeap可能會對整個系統的性能產生負面影響。如果每個應用都請求更多的內存,那么系統可用的總內存就會減少。可能導致系統需要更頻繁地進行內存管理操作,如內存交換或殺死后臺進程,以釋放足夠的內存給前臺應用。不僅可能影響前臺應用的性能,還可能影響用戶的多任務體驗。9iZ28資訊網——每日最新資訊28at.com

依賴largeHeap來解決內存問題并不是一種長期或可持續的解決方案。更好的做法應該是優化應用的內存使用,確保應用能夠高效地管理其內存資源。9iZ28資訊網——每日最新資訊28at.com

largeHeap屬性并不能保證應用一定能夠獲得更多的內存。即使設置了largeHeap="true",系統仍然會根據設備的總內存、其他應用的內存需求以及系統的內存管理策略來決定實際分配給應用的內存大小。9iZ28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-85373-0.htmlAndroid應用開發中largeHeap屬性的妙用與潛在風險

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: C#中編寫系統操作日志的實踐

下一篇: Java對象不再使用時,為什么要賦值為 null ?

標簽:
  • 熱門焦點
  • 中興AX5400Pro+上手體驗:再升級 雙2.5G網口+USB 3.0這次全都有

    2021年11月的時候,中興先后發布了兩款路由器產品,中興AX5400和中興AX5400 Pro,從產品命名上就不難看出這是隸屬于同一系列的,但在外觀設計上這兩款產品可以說是完全沒一點關系
  • 小米降噪藍牙耳機Necklace分享:聽一首歌 讀懂一個故事

    在今天下午的小米Civi 2新品發布會上,小米還帶來了一款新的降噪藍牙耳機Necklace,我們也在發布結束的第一時間給大家帶來這款耳機的簡單分享。現在大家能見到最多的藍牙耳機
  • 7月安卓手機性價比榜:努比亞+紅魔兩款新機入榜

    7月登場的新機有努比亞Z50S Pro和紅魔8S Pro,除了三星之外目前唯二的兩款搭載超頻版驍龍8Gen2處理器的產品,而且努比亞和紅魔也一貫有著不錯的性價比,所以在本次的性價比榜單
  • 6月安卓手機好評榜:魅族20 Pro蟬聯冠軍

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年6月1日至6月30日,僅限國內市場。第一名:魅族20 Pro好評率:95%5月份的時候魅族20 Pro就是
  • JavaScript 混淆及反混淆代碼工具

    介紹在我們開始學習反混淆之前,我們首先要了解一下代碼混淆。如果不了解代碼是如何混淆的,我們可能無法成功對代碼進行反混淆,尤其是使用自定義混淆器對其進行混淆時。什么是混
  • 學習JavaScript的10個理由...

    作者 | Simplilearn編譯 | 王瑞平當你決心學習一門語言的時候,很難選擇到底應該學習哪一門,常用的語言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 自動化在DevOps中的力量:簡化軟件開發和交付

    自動化在DevOps中扮演著重要角色,它提升了DevOps的效能。通過自動化工具和方法,DevOps團隊可以實現以下目標:消除手動和重復性任務。簡化流程。在整個軟件開發生命周期中實現更
  • 2299元起!iQOO Pad開啟預售:性能最強天璣平板

    5月23日,iQOO如期舉行了新品發布會,除了首發安卓最強旗艦處理器的iQOO Neo8系列新機外,還在發布會上推出了旗下首款平板電腦——iQOO Pad,其搭載了天璣
  • 朋友圈可以修改可見范圍了 蘋果用戶可率先體驗

    近日,iOS用戶迎來微信8.0.27正式版更新,除了可更換二維碼背景外,還新增了多項實用功能。在新版微信中,朋友圈終于可以修改可見范圍,簡單來說就是已發布的朋友圈
Top 主站蜘蛛池模板: 调兵山市| 遂平县| 石阡县| 兰考县| 颍上县| 清徐县| 迭部县| 微山县| 八宿县| 邹平县| 中西区| 嵩明县| 泊头市| 合肥市| 大余县| 屏南县| 察隅县| 略阳县| 南昌市| 海宁市| 仙桃市| 浦县| 秭归县| 宜川县| 高青县| 友谊县| 天祝| 揭阳市| 蒙山县| 昔阳县| 织金县| 淮南市| 康马县| 东海县| 承德县| 彰武县| 岳阳县| 东安县| 弥勒县| 和静县| 南康市|