溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java的垃圾回收機(jī)制介紹

發(fā)布時間:2021-08-25 18:50:47 來源:億速云 閱讀:121 作者:chen 欄目:編程語言

這篇文章主要講解了“java的垃圾回收機(jī)制介紹”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“java的垃圾回收機(jī)制介紹”吧!

java垃圾回收機(jī)制介紹

  了解了到了絕大部分的對象是分配在堆上面的,我們在編碼的時候并沒有顯示的指明哪些對象需要回收,但是程序在運(yùn)行的過程中是會一直創(chuàng)建對象的,之所以沒有內(nèi)存溢出是因?yàn)槲覀兊奶摂M機(jī)幫我我們自動進(jìn)行了垃圾回收,保證程序運(yùn)行的時候有足夠的空間來分配我們創(chuàng)建的對象。

  JVM被分為五大內(nèi)存區(qū)域,其中程序計(jì)數(shù)器、虛擬機(jī)棧,本地方法棧是線程私有的,內(nèi)存隨著線程的銷毀而退出。堆和方法區(qū)是動態(tài)分配的,由于方法區(qū)的垃圾收集收效甚微,所以本章所說的垃圾回收主要指的是堆內(nèi)存的垃圾回收。

什么樣的對象會被回收

  什么樣的對象會被回收呢?我們想象下在生活中,什么樣的東西會被我們?nèi)舆M(jìn)垃圾桶呢,是不是已經(jīng)不再使用的東西或者說是沒有任何利用價值的東西,在java中也是一樣的,就是不會再使用到的對象。那么在java中,怎么判斷這個對象是不是不會再被使用呢?顯然,這似乎要比現(xiàn)實(shí)生活中判斷哪些東西是垃圾要復(fù)雜許多。

如何確定一個對象是垃圾

  前面說到,我們需要知道哪些對象是需要被回收的,那么怎么判斷這個對象是否需要回收呢?

  引用計(jì)數(shù)法。

  創(chuàng)建對象的時候,給對象添加一個引用計(jì)數(shù)器,每當(dāng)有一個地方引用的時候,就給計(jì)數(shù)器加1,當(dāng)引用失效時,就給計(jì)數(shù)器減1,當(dāng)引用計(jì)數(shù)器為0的時候,說明這個對象不會再被使用。這種方法被稱為引用計(jì)數(shù)法。引用計(jì)數(shù)法的邏輯比較簡單,效率高,但是卻無法解決對象和對象之間的循環(huán)引用的問題。

  可達(dá)性算法分析

  可達(dá)性分析算法的基本思想是通過被稱為GCRoots的起始點(diǎn)向下搜索,搜索走過的鏈路被稱為引用鏈,如果沒有任何一條鏈路到達(dá)這個對象,那么這個對象就不會再被使用,就可以將其回收。

感謝各位的閱讀,以上就是“java的垃圾回收機(jī)制介紹”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對java的垃圾回收機(jī)制介紹這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI