[深入理解Java虛擬機器]第三章 概述:哪些記憶體需要回收?
說起垃圾收集(Garbage Collection,GC ) ,大部分人都把這項技術當做Java語言的伴生產物。事實上 ,GC的歷史比Java久遠 ,1960年誕生於MIT的Lisp是第一門真正使用記憶體動態分配和垃圾收集技術的語言。當Lisp還在胚胎時期時,人們就在思考GC需要完成的3件事情:
- 哪些記憶體需要回收?
- 什麼時候回收?
- 如何回收?
經過半個多世紀的發展,目前記憶體的動態分配與記憶體回收技術已經相當成熟,一切看起來都進入了“自動化”時代,那為什麼我們還要去了解GC和記憶體分配呢?答案很簡單:當需要排查各種記憶體溢位、記憶體洩漏問題時,當垃圾收整合為系統達到更高併發量的瓶頸時,我們就需要對這些“自動化”的技術實施必要的監控和調節。
把時間從半個多世紀以前撥回到現在,回到我們熟悉的Java語言。第2章介紹了Java記憶體執行時區域的各個部分,其中程式計數器、虛擬機器棧、本地方法棧3個區域隨執行緒而生,隨執行緒而滅;棧中的棧幀隨著方法的進入和退出而有條不紊地執行著出棧和入棧操作。每一個棧幀中分配多少記憶體基本上是在類結構確定下來時就已知的(儘管在執行期會由JIT編譯器進行一些優化,但在本章基於概念模型的討論中,大體上可以認為是編譯期可知的),因此 這幾個區域的記憶體分配和回收都具備確定性,在這幾個區域內就不需要過多考慮回收的問題 ,因為方法結束或者執行緒結束時,記憶體自然就跟隨著回收了。而Java堆和方法區則不一 樣 ,一個介面中的多個實現類需要的記憶體可能不一樣,一個方法中的多個分支需要的記憶體也可能不一樣,我們只有在程式處於執行期間時才能知道會建立哪些物件,這部分記憶體的分配和回收都是動態的,垃圾收集器所關注的是這部分記憶體,本章後續討論中的“ 記憶體”分配與回收也僅指這一部分記憶體。
相關文章
- [深入理解Java虛擬機器]第三章 記憶體分配與回收策略Java虛擬機記憶體
- 深入理解Java虛擬機器 --- 記憶體分配與回收策略Java虛擬機記憶體
- 深入理解Java虛擬機器筆記之六記憶體分配與回收策略Java虛擬機筆記記憶體
- 【深入理解Java虛擬機器】垃圾回收Java虛擬機
- 《深入理解Java虛擬機器》個人讀書總結——JAVA虛擬機器記憶體Java虛擬機記憶體
- 深入理解Java虛擬機器 --- 垃圾回收器Java虛擬機
- 深入理解虛擬機器之Java記憶體區域虛擬機Java記憶體
- 深入理解JVM虛擬機器-物件引用,GC與記憶體分配回收JVM虛擬機物件GC記憶體
- Java虛擬機器記憶體分配與回收策略Java虛擬機記憶體
- 深入理解Java虛擬機器(自動記憶體管理機制)Java虛擬機記憶體
- 深入理解Java虛擬機器筆記-自動記憶體管理機制Java虛擬機筆記記憶體
- 深入理解 Java 虛擬機器:Java 記憶體區域透徹分析Java虛擬機記憶體
- 深入理解Java虛擬機器-Java記憶體區域透徹分析Java虛擬機記憶體
- 深入理解Java虛擬機器之垃圾回收篇Java虛擬機
- 《深入理解Java虛擬機器》第三章讀書筆記(三)——經典垃圾回收器Java虛擬機筆記
- 深入理解Java虛擬機器之JVM記憶體佈局篇Java虛擬機JVM記憶體
- 深入理解Java虛擬機器-Java記憶體區域與記憶體溢位異常Java虛擬機記憶體溢位
- 《深入理解java虛擬機器》學習筆記1——Java記憶體結構Java虛擬機筆記記憶體
- 深入理解java虛擬機器 筆記一 ---自動記憶體管理機制Java虛擬機筆記記憶體
- 深入理解Java虛擬機器 - 垃圾收集器與記憶體分配策略Java虛擬機記憶體
- 深入理解Java虛擬機器-垃圾收集器與記憶體分配策略Java虛擬機記憶體
- [深入理解Java虛擬機器]第二章 記憶體區域Java虛擬機記憶體
- [深入理解Java虛擬機器]垃圾回收演算法Java虛擬機演算法
- 深入理解虛擬機器之垃圾回收虛擬機
- 《深入理解Java虛擬機器》第三章讀書筆記(一)——垃圾回收演算法Java虛擬機筆記演算法
- JAVA 虛擬機器可用記憶體Java虛擬機記憶體
- [深入理解Java虛擬機器]Hotspot垃圾回收演算法Java虛擬機HotSpot演算法
- 《深入理解java虛擬機器》讀書筆記2(java記憶體區域與OOM)Java虛擬機筆記記憶體OOM
- 《深入理解java虛擬機器》學習筆記2——Java記憶體溢位例項Java虛擬機筆記記憶體溢位
- 【深入Java虛擬機器】之一:Java記憶體區域與記憶體溢位Java虛擬機記憶體溢位
- [深入理解Java虛擬機器]第三章 理解GC曰志Java虛擬機GC
- 深入理解JVM虛擬機器-JVM記憶體區域與記憶體溢位JVM虛擬機記憶體溢位
- 《深入理解 Java 虛擬機器》筆記整理Java虛擬機筆記
- 《深入理解Java虛擬機器》個人筆記Java虛擬機筆記
- 深入理解java虛擬機器Java虛擬機
- 《深入理解Java虛擬機器》(二)--垃圾收集器與記憶體分配策略(2)Java虛擬機記憶體
- 《深入java虛擬機器》讀書筆記之Java記憶體區域Java虛擬機筆記記憶體
- 詳解Java 虛擬機器(第⑥篇)——記憶體分配與回收策略Java虛擬機記憶體