GC會stop the world。會暫停程序的執行,帶來延遲的代價。所以在開發中,我們不希望GC的次數過多。
目前創新互聯公司已為成百上千家的企業提供了網站建設、域名、網站空間、網站托管運營、企業網站設計、河東網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。
本文將討論如何在開發中改善各種細節,從而減少GC的次數。
(1)對象不用時最好顯式置為 Null
一般而言,為 Null 的對象都會被作為垃圾處理,所以將不用的對象顯式地設
為 Null,有利于 GC 收集器判定垃圾,從而提高了 GC 的效率。
(2)盡量少用 System.gc()
此函數建議 JVM進行主 GC,雖然只是建議而非一定,但很多情況下它會觸發
主 GC,從而增加主 GC 的頻率,也即增加了間歇性停頓的次數。
(3)盡量少用靜態變量
靜態變量屬于全局變量,不會被 GC 回收,它們會一直占用內存。
(4)盡量使用 StringBuffer,而不用 String 來累加字符串
由于 String 是固定長的字符串對象,累加 String 對象時,并非在一個 String對象中擴增,而是重新創建新的 String 對象,如 Str5=Str1+Str2+Str3+Str4,這條語句執行過程中會產生多個垃圾對象,因為對次作“+”操作時都必須創建新的 String 對象,但這些過渡對象對系統來說是沒有實際意義的,只會增加更多的垃圾。 避免這種情況可以改用 StringBuffer 來累加字符串,因 StringBuffer是可變長的,它在原有基礎上進行擴增,不會產生中間對象
(5)分散對象創建或刪除的時間
集中在短時間內大量創建新對象,特別是大對象,會導致突然需要大量內存,JVM 在面臨這種情況時,只能進行主 GC,以回收內存或整合內存碎片,從而增加主 GC 的頻率。
集中刪除對象,道理也是一樣的。 它使得突然出現了大量的垃圾對象,空閑空間必然減少,從而大大增加了下一次創建新對象時強制主 GC 的機會。
(6) 盡量少用 finalize 函數
因為它會加大 GC 的工作量, 因此盡量少用finalize 方式回收資源。
(7) 使用軟引用類型
如果需要使用經常用到的圖片, 可以使用軟引用類型, 它可以盡可能將圖片保存在內存中, 供程序調用, 而不引起 OutOfMemory。
1、設置環境變量GOGC=off。
2、運行時調用debug.SetGCPercent(-1)。GC理解為android中的垃圾回收,常見觸發垃圾回收是計數引用,當引用計數為0時會觸發垃圾回收。此時系統并不會回收內存,而是會當作垃圾存放起來,當下次需要的時候,快速使用。關閉GC系統就會徹底回收內存。
你指的是這個嗎Gabage Collection?垃圾回收,是.net中對內存管理的一種功能。垃圾回收器跟蹤并回收托管內存中分配的對象,定期執行垃圾回收以回收分配給沒有有效引用的對象的內存。當使用可用內存不能滿足內存請求時,GC會自動進行。 在進行垃圾回收時,垃圾回收器回首先搜索內存中的托管對象,然后從托管代碼中搜索被引用的對象并標記為有效,接著釋放沒有被標記為有效的對象并收回內存,最后整理內存將有效對象挪動到一起。
網站名稱:androidgc,AndroidGc錢包下載
瀏覽地址:http://m.newbst.com/article16/dssgogg.html
成都網站建設公司_創新互聯,為您提供、網站內鏈、ChatGPT、網站營銷、網站設計、網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯