如何理解JAVA中的GC-創(chuàng)新互聯(lián)

前言

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序設(shè)計、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了同江免費建站歡迎大家使用!

GC(Garbage Collection)是我們在學(xué)習(xí) JVM 的過程中不可避免的一道坎,接下來,我們就來系統(tǒng)的學(xué)習(xí)一下 GC。

如何理解JAVA中的GC

做一件事情之前,我們一定要去知道我們?yōu)槭裁匆プ觯@里不僅僅指 GC,更適用我們?nèi)粘5膶W(xué)習(xí)和生活,知其然,知其所以然,方能百戰(zhàn)不殆。

下面我們先去了解為什么要有 GC,以及 GC 在 JVM 中扮演了一個什么樣的角色,起到了什么的作用?

為什么要有 GC

用過 C++ 的同學(xué)可能知道,對象所占的內(nèi)存在程序結(jié)束運行之前一直被占用,在明確釋放之前不能分配給其它對象。如果我們不去手動的清除這些無用的對象,內(nèi)存很快就被占滿,而在 JVM 中,GC 所起到的作用就是一個清道夫,它可以幫助我們?nèi)ヅ卸男ο笫菬o用對象,怎么進行垃圾收集,以及決定內(nèi)存分代和內(nèi)存分配的策略**。

可能有同學(xué)會問了,既然我們的 JVM 會給我們做 GC 的工作,我們?yōu)槭裁催€要去學(xué)習(xí) GC 呢,一切交給 JVM 不好嗎?當(dāng)然,在我們的日常情況下,我們一般不會去關(guān)心 GC 的一些細(xì)節(jié),但是當(dāng)我們遇到內(nèi)存泄露,內(nèi)存溢出,高并發(fā)瓶頸的時候,我們就需要去對 GC 開刀,進行更為細(xì)致的監(jiān)控和調(diào)節(jié)。

內(nèi)存泄露:指程序中己動態(tài)分配的堆內(nèi)存由于某種原因程序未釋放或無法釋放,造成系統(tǒng)內(nèi)存的浪費,導(dǎo)致程序運行速度減慢甚至系統(tǒng)崩潰等嚴(yán)重后果。

內(nèi)存溢出:應(yīng)用系統(tǒng)中存在無法回收的內(nèi)存或使用的內(nèi)存過多,最終使得程序運行要用到的內(nèi)存大于能提供的大內(nèi)存。

那么現(xiàn)在問題來了,我們要進行垃圾回收,首先我們需要知道垃圾在哪

垃圾在哪

前面我們講了JVM 的運行時內(nèi)存區(qū)域,知道線程可以分為線程獨占區(qū)和線程共享區(qū),其中線程獨占區(qū)(程序計數(shù)器,虛擬機棧,本地方法棧)的內(nèi)存生命周期是和線程保持一致,且這幾個區(qū)域分配的內(nèi)存大小跟類的大小有關(guān),也就是說,當(dāng)我們的類結(jié)構(gòu)固定之后,這部分的內(nèi)存就不會再發(fā)生更改,且當(dāng)方法或線程結(jié)束的時候,內(nèi)存自然就跟隨著回收了.

而線程共享區(qū)的堆內(nèi)存和方法區(qū)則不一樣,堆內(nèi)存和方法區(qū)所用的內(nèi)存是在編譯期間無法確定的,因為一個接口的不同實現(xiàn),一個方法的不同控制條件分支所執(zhí)行的代碼可能完全相反,我們只有在運行時才知道會創(chuàng)建哪些對象,這部分的內(nèi)存的分配和回收是動態(tài)的,而我們的 GC 關(guān)注的就是該部分的內(nèi)存。

打個比方來說:JVM 如果是一輛車,線程獨占區(qū)的就像是零件,在出廠時這些零件的壽命基本上都是已知的,線程共享區(qū)就像是汽油,汽油的消耗跟我們所采用的路線有關(guān),所以我們關(guān)注的部分就是這部分會動態(tài)變化的,比如如何開車才能更省油~

以上就是3分鐘了解JAVA中GC的概念的詳細(xì)內(nèi)容,更多請關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司其它相關(guān)文章!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

文章名稱:如何理解JAVA中的GC-創(chuàng)新互聯(lián)
本文來源:http://bm7419.com/article38/diodpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、App設(shè)計、網(wǎng)站排名、網(wǎng)站制作、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)