1. 前言
Java和C++之間顯著的一個(gè)區(qū)別就是對(duì)內(nèi)存的管理。和C++把內(nèi)存管理的權(quán)利賦予給開發(fā)人員的方式不同,Java擁有一套自動(dòng)的內(nèi)存回收系統(tǒng)(Garbage Collection,GC)簡(jiǎn)稱GC,可以無需開發(fā)人員干預(yù)而對(duì)不再使用的內(nèi)存進(jìn)行回收管理。
垃圾回收技術(shù)(以下簡(jiǎn)稱GC)是一套自動(dòng)的內(nèi)存管理機(jī)制。當(dāng)計(jì)算機(jī)系統(tǒng)中的內(nèi)存不再使用的時(shí)候,把這些空閑的內(nèi)存空間釋放出來重新投入使用,這種內(nèi)存資源管理的機(jī)制就稱為垃圾回收。
其實(shí)GC并不是Java的專利,GC的的發(fā)展歷史遠(yuǎn)比Java來得久遠(yuǎn)的多。早在Lisp語言中,就有GC的功能,包括其他很多語言,如:Python(其實(shí)Python的歷史也比Java早)也具有垃圾回收功能。
使用GC的好處,可以把這種容易犯錯(cuò)的行為讓給計(jì)算機(jī)系統(tǒng)自己去管理,可以防止人為的錯(cuò)誤。同時(shí)也把開發(fā)人員從內(nèi)存管理的泥沼中解放出來。
雖然使用GC雖然有很多方便之處,但是如果不了解GC機(jī)制是如何運(yùn)作的,那么當(dāng)遇到問題的時(shí)候,我們將會(huì)很被動(dòng)。所以有必要學(xué)習(xí)下Java虛擬機(jī)中的GC機(jī)制,這樣我們才可以更好的利用這項(xiàng)技術(shù)。當(dāng)遇到問題,比如內(nèi)存泄露或內(nèi)存溢出的時(shí)候,或者垃圾回收操作影響系統(tǒng)性能的時(shí)候,我們可以快速的定位問題,解決問題。
接下來,我們來看下JVM中的GC機(jī)制是怎么樣的。
2. 哪些內(nèi)存可以回收
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26