Java垃圾收集器使用小訣竅,垃圾收集器(Garbage Collector,GC)是現代軟體虛擬機器技術的重要組成部分,其設計方案對運行於虛擬機器上的應用程式效能影響極大。 Java 虛擬機器(JVM)與.net framework都提供了這項功能。下面我們簡單介紹一下Java虛擬機器中的垃圾收集器原理。
Java的記憶體管理其實就是物件的管理,其中包含物件的分配和釋放。
對程式設計師來說,當分配物件使用new關鍵字;釋放物件時,只要將物件所有參考賦值為null。對GC來說,當程式設計師建立物件時,GC就開始監控這個物件的位址、大小以及使用情況。通常,GC會採用有向圖的方式來記錄和管理堆(heap)中的所有物件。透過這種方式確定哪些物件是“可達的”,哪些物件是“不可達的”。當GC確定一些物件為「不可達」時,GC就有責任回收這些記憶體空間。
GC在JVM中通常是由一個或一組進程來實現的,它本身也和用戶程式一樣佔用heap空間,運行時也佔用CPU。當GC進程運行時,應用程式停止運行。
因此,當GC運行時間較長時,用戶能夠感覺到Java程式的停頓,另外一方面,如果GC運行時間太短,則可能對象回收率太低,這意味著還有很多應該回收的物件沒有被回收,仍然佔用大量記憶體。因此,在設計GC的時候,就必須在停頓時間和回收率之間進行權衡。
根據GC的工作原理,我們可以透過一些技巧和方式,讓GC運作更有效率,更符合應用程式的要求。
以下是一些程式設計的幾點建議。
1.最基本的建議就是儘早釋放無用物件的參考。
大多數程式設計師在使用臨時變數的時候,都是讓引用變數在退出活動域(scope)後,自動設定為null。
2.盡量少用finalize函數。 finalize函數是Java提供給程式設計師一個釋放物件或資源的機會。但是,它會增加GC的工作量,因此盡量少採用finalize方式回收資源。
3.如果需要使用經常使用的圖片,可以使用soft應用程式類型。它可以盡可能將圖片保存在記憶體中,供程式調用,而不引起OutOfMemory。
4.注意集合資料類型,包括數組,樹,圖,鍊錶等資料結構,對於這類對象,GC回收它們一般效率較低。如果程式允許,儘早將不用的引用物件賦為null。這樣可以加速GC的工作。所以,如非必要,程式中採用的資料結構要盡量簡單。
5.當程式有一定的等待時間,程式設計師可以手動執行System.gc(),通知GC運行,但是Java語言規格並不保證GC一定會執行。
垃圾收集器在一個JAVA程式中的執行是自動的,不能強制執行,即是程式設計師能明確的判斷出有一塊記憶體已經無用了,是應該回收的,程式設計師也不能強制垃圾收集器回收該記憶體塊。
以上是Java怎麼使用垃圾回收器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

Atom編輯器mac版下載
最受歡迎的的開源編輯器

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

禪工作室 13.0.1
強大的PHP整合開發環境

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中