GC、進程和線程的定義


GC是什么,為什么要有GC

  1. GC是垃圾收集的意思(Gabage Collection),內存處理是編程人員容易出現問題的地方,忘記或者錯誤的內存回收會導致程序或系統的不穩定甚至崩潰。Java提供的GC功能可以自動監測對象是否超過作用域從而達到自動回收內存的目的,Java語言沒有提供釋放已分配內存的顯示操作方法。

  2. 垃圾回收可以有效的防止內存泄露,有效的使用可以使用的內存。垃圾回收器通常是作為一個單獨的低級別的線程運行,不可預知的情況下對內存堆中已經死亡的或者長時間沒有使用的對象進行清除和回收,程序員不能實時的調用垃圾回收器對某個對象或所有對象進行垃圾回收。回收機制有分代復制垃圾回收、標記垃圾回收和增量垃圾回收。

垃圾回收器的基本原理是什么?垃圾回收器可以馬上回收內存嗎?有什么辦法主動通知虛擬機進行垃圾回收?

對於GC來說,當程序員創建對象時,GC就開始監控這個對象的地址、大小以及使用情況。

通常,GC采用有向圖的方式記錄和管理堆(heap)中的所有對象。通過這種方式確定哪些對象是"可達的",哪些對象是"不可達的"。

當GC確定一些對象為"不可達"時,GC就有責任回收這些內存空間。程序員可以手動執行System.gc(),通知GC運行,但是Java語言規范並不保證GC一定會執行。

進程和線程的定義

線程

線程是一種操作系統對象,代表着一個進程中要被執行的代碼的路徑。每一個WIN32應用程序至少有一個線程--通常稱為住線程或默認線程--但應用程序可以自由地創建其他線程來執行其他任務!

進程

進程是程序的一次動態執行過程,它對應了從代碼加載、執行到執行完畢的一個完整過程,這個過程也是進程本身從產生、發展到消亡的過程。

區別和聯系

線程是比進程更小的執行單位。一個進程在其執行過程能夠中,可以產生多個線程,形成多條執行線索。每條線索,即每個線程也有它自身的產生、存在和消亡過程,也是一個動態的概念。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM