您好,登錄后才能下訂單哦!
這篇文章主要講解了“java的垃圾回收機制介紹”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“java的垃圾回收機制介紹”吧!
了解了到了絕大部分的對象是分配在堆上面的,我們在編碼的時候并沒有顯示的指明哪些對象需要回收,但是程序在運行的過程中是會一直創建對象的,之所以沒有內存溢出是因為我們的虛擬機幫我我們自動進行了垃圾回收,保證程序運行的時候有足夠的空間來分配我們創建的對象。
JVM被分為五大內存區域,其中程序計數器、虛擬機棧,本地方法棧是線程私有的,內存隨著線程的銷毀而退出。堆和方法區是動態分配的,由于方法區的垃圾收集收效甚微,所以本章所說的垃圾回收主要指的是堆內存的垃圾回收。
什么樣的對象會被回收呢?我們想象下在生活中,什么樣的東西會被我們扔進垃圾桶呢,是不是已經不再使用的東西或者說是沒有任何利用價值的東西,在java中也是一樣的,就是不會再使用到的對象。那么在java中,怎么判斷這個對象是不是不會再被使用呢?顯然,這似乎要比現實生活中判斷哪些東西是垃圾要復雜許多。
前面說到,我們需要知道哪些對象是需要被回收的,那么怎么判斷這個對象是否需要回收呢?
引用計數法。
創建對象的時候,給對象添加一個引用計數器,每當有一個地方引用的時候,就給計數器加1,當引用失效時,就給計數器減1,當引用計數器為0的時候,說明這個對象不會再被使用。這種方法被稱為引用計數法。引用計數法的邏輯比較簡單,效率高,但是卻無法解決對象和對象之間的循環引用的問題。
可達性算法分析
可達性分析算法的基本思想是通過被稱為GCRoots的起始點向下搜索,搜索走過的鏈路被稱為引用鏈,如果沒有任何一條鏈路到達這個對象,那么這個對象就不會再被使用,就可以將其回收。
感謝各位的閱讀,以上就是“java的垃圾回收機制介紹”的內容了,經過本文的學習后,相信大家對java的垃圾回收機制介紹這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。