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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 堆_JAVA学习笔记 07——堆、栈和垃圾回收机制

發(fā)布時(shí)間:2025/3/12 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 堆_JAVA学习笔记 07——堆、栈和垃圾回收机制 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

程序執(zhí)行的內(nèi)存分析過程:

虛擬機(jī)棧(簡稱:棧)的特點(diǎn)如下:

1. 棧描述的是方法執(zhí)行的內(nèi)存模型。每個(gè)方法被調(diào)用都會(huì)創(chuàng)建一個(gè)棧幀(存儲(chǔ)局部變量、操作數(shù)、方法出口等)。

2. JVM為每個(gè)線程創(chuàng)建一個(gè)棧,用于存放該線程執(zhí)行方法的信息(實(shí)際參數(shù)、局部變量等)

3. 棧屬于線程私有,不能實(shí)現(xiàn)線程間共享!

4. 棧的存儲(chǔ)特性是“先進(jìn)后出,后進(jìn)先出”

5. 棧是由系統(tǒng)自動(dòng)分配,速度快!棧是一個(gè)連續(xù)的內(nèi)存空間

堆的特點(diǎn)如下:

1. 堆用于存儲(chǔ)創(chuàng)建好的對象和數(shù)組(數(shù)組也是對象)

2. JVM只有一個(gè)堆,被所有線程共享

3. 堆是一個(gè)不連續(xù)的內(nèi)存空間,分配靈活,速度慢!

方法區(qū)(又叫靜態(tài)區(qū),也是堆)特點(diǎn)如下:

1. 方法區(qū)是JAVA虛擬機(jī)規(guī)范,可以有不同的實(shí)現(xiàn)

2. JVM只有一個(gè)方法區(qū),被所有線程共享

3. 方法區(qū)實(shí)際也是堆,只是用于存儲(chǔ)類、常量相關(guān)的信息

用來存放程序中永遠(yuǎn)不變或唯一的內(nèi)容(類信息、靜態(tài)變量、字符串常量等)


垃圾回收機(jī)制(Garbage Collection):

Java引入了垃圾回收機(jī)制,令C++程序員最頭疼的內(nèi)存管理問題迎刃而解。Java程序員可以將更多的精力放到業(yè)務(wù)邏輯上而不是內(nèi)存管理工作上,大大的提高了開發(fā)效率。

內(nèi)存管理:

Java的內(nèi)存管理很大程度指的就是:堆中對象的管理,其中包括對象空間的分配和釋放。

對象空間的分配:使用new關(guān)鍵字創(chuàng)建對象即可。

對象空間的釋放:將對象賦值null即可,垃圾回收器將負(fù)責(zé)回收所有“不可達(dá)”對象的內(nèi)存空間。

垃圾回收過程:

任何一種垃圾回收算法一般要做兩件基本事情:

1. 發(fā)現(xiàn)無用的對象

2. 回收無用對象占用的內(nèi)存空間

垃圾回收機(jī)制保證可以將“無用的對象”進(jìn)行回收。無用的對象指的就是沒有任何變量引用該對象。Java的垃圾回收器通過相關(guān)算法發(fā)現(xiàn)無用對象,并進(jìn)行清除和整理。

垃圾回收相關(guān)算法:

1. 引用計(jì)數(shù)法

堆中的每個(gè)對象都對應(yīng)一個(gè)引用計(jì)數(shù)器,當(dāng)有引用指向這個(gè)對象時(shí),引用計(jì)數(shù)器加1,而當(dāng)指向該對象的引用失效時(shí)(引用變?yōu)閚ull),引用計(jì)數(shù)器減1,最后如果該對象的引用計(jì)算器的值為0時(shí),則Java垃圾回收器會(huì)認(rèn)為該對象是無用對象并對其進(jìn)行回收。優(yōu)點(diǎn)是算法簡單,缺點(diǎn)是“循環(huán)引用的無用對象”無法識別。

2. 引用可達(dá)法(根搜索法)

程序把所有的引用關(guān)系看作一張圖,從一個(gè)節(jié)點(diǎn)GC ROOT開始,尋找對應(yīng)的引用節(jié)點(diǎn),找到這個(gè)節(jié)點(diǎn)以后,繼續(xù)尋找這個(gè)節(jié)點(diǎn)的引用節(jié)點(diǎn),當(dāng)所有的引用節(jié)點(diǎn)尋找完畢之后,剩余的節(jié)點(diǎn)則被認(rèn)為是沒有被引用到的節(jié)點(diǎn),即無用的節(jié)點(diǎn)。

總結(jié)

以上是生活随笔為你收集整理的java 堆_JAVA学习笔记 07——堆、栈和垃圾回收机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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