日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

【深入Java虚拟机JVM 06】垃圾收集概述

發(fā)布時(shí)間:2025/3/20 java 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【深入Java虚拟机JVM 06】垃圾收集概述 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

說明:文章所有內(nèi)容均摘自《深入理解Java虛擬機(jī):JVM高級(jí)特性與最佳實(shí)踐(第二版)》

?

說起垃圾收集(Garbage Collection,GC),大部分人都把這項(xiàng)技術(shù)當(dāng)做Java語(yǔ)言的伴生產(chǎn)物。事實(shí)上,GC的歷史比Java久遠(yuǎn),1960年誕生于MIT的Lisp是第一門真正使用內(nèi)存動(dòng)態(tài)分配和垃圾收集技術(shù)的語(yǔ)言。

當(dāng)Lisp還在胚胎時(shí)期時(shí),人們就在思考GC需要完成的3件事情:

  • 哪些內(nèi)存需要回收?
  • 什么時(shí)候回收?
  • 如何回收?

?

經(jīng)過半個(gè)多世紀(jì)的發(fā)展,目前內(nèi)存的動(dòng)態(tài)分配與內(nèi)存回收技術(shù)已經(jīng)相當(dāng)成熟,一切看起來(lái)都進(jìn)入了“自動(dòng)化”時(shí)代,那為什么我們還要去了解GC和內(nèi)存分配呢?

答案很簡(jiǎn)單:當(dāng)需要排查各種內(nèi)存溢出、內(nèi)存泄漏問題時(shí),當(dāng)垃圾收集成為系統(tǒng)達(dá)到更高并發(fā)量的瓶頸時(shí),我
們就需要對(duì)這些“自動(dòng)化”的技術(shù)實(shí)施必要的監(jiān)控和調(diào)節(jié)。

把時(shí)間從半個(gè)多世紀(jì)以前撥回到現(xiàn)在,回到我們熟悉的Java語(yǔ)言。前面介紹了Java內(nèi)存運(yùn)行時(shí)區(qū)域的各個(gè)部分,其中程序計(jì)數(shù)器、虛擬機(jī)棧、本地方法棧3個(gè)區(qū)域隨線程而生,隨線程而滅;棧中的棧幀隨著方法的進(jìn)入和退出而有條不紊地執(zhí)行著出棧和入棧操作。每一個(gè)棧幀中分配多少內(nèi)存基本上是在類結(jié)構(gòu)確定下來(lái)時(shí)就已知的(盡管在運(yùn)行期會(huì)由JIT編譯器進(jìn)行一些優(yōu)化,但在本章基于概念模型的討論中,大體上可以認(rèn)為是編譯期可知的),因此這幾個(gè)區(qū)域的內(nèi)存分配和回收都具備確定性,在這幾個(gè)區(qū)域內(nèi)就不需要過多考慮回收的問題,因?yàn)榉椒ńY(jié)束或者線程結(jié)束時(shí),內(nèi)存自然就跟隨著回收了。而Java堆和方法區(qū)則不一樣,一個(gè)接口中的多個(gè)實(shí)現(xiàn)類需要的內(nèi)存可能不一樣,一個(gè)方法中的多個(gè)分支需要的內(nèi)存也可能不一樣,我們只有在程序處于運(yùn)行期間時(shí)才能知道會(huì)創(chuàng)建哪些對(duì)象,這部分內(nèi)存的分配和回收都是動(dòng)態(tài)的,垃圾收集器所關(guān)注的是這部分內(nèi)存,后續(xù)文章討論中的“內(nèi)存”分配與回收也僅指這一部分內(nèi)存。

?

總結(jié)

以上是生活随笔為你收集整理的【深入Java虚拟机JVM 06】垃圾收集概述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。