国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 Java Java基礎 3分鐘了解JAVA中GC的概念

3分鐘了解JAVA中GC的概念

Nov 30, 2019 pm 04:36 PM
gc 概念

3分鐘了解JAVA中GC的概念

前言

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

3分鐘了解JAVA中GC的概念

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

(推薦視頻:java視頻教程)??

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

為什么要有 GC

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

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

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

內(nèi)存溢出:應用系統(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)存大小跟類的大小有關,也就是說,當我們的類結(jié)構(gòu)固定之后,這部分的內(nèi)存就不會再發(fā)生更改,且當方法或線程結(jié)束的時候,內(nèi)存自然就跟隨著回收了.

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

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

本文來自php中文網(wǎng),java教程欄目,歡迎學習!??

以上是3分鐘了解JAVA中GC的概念的詳細內(nèi)容。更多信息請關注PHP中文網(wǎng)其他相關文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
深入了解Gunicorn的基本原理和功能 深入了解Gunicorn的基本原理和功能 Jan 03, 2024 am 08:41 AM

Gunicorn的基本概念和作用Gunicorn是一個用于在PythonWeb應用程序中運行WSGI服務器的工具。WSGI(Web服務器網(wǎng)關接口)是Python語言定義的一種規(guī)范,用于定義Web服務器與Web應用程序之間的通信接口。Gunicorn通過實現(xiàn)WSGI規(guī)范,使得PythonWeb應用程序可以被部署和運行在生產(chǎn)環(huán)境中。Gunicorn的作用是作

Oracle RAC 簡介及核心概念 Oracle RAC 簡介及核心概念 Mar 07, 2024 am 11:39 AM

OracleRAC(RealApplicationClusters)簡介及核心概念隨著企業(yè)數(shù)據(jù)量的不斷增長和對高可用性、高性能的需求日益突出,數(shù)據(jù)庫集群技術變得越來越重要。OracleRAC(RealApplicationClusters)就是為了解決這一問題而設計的。OracleRAC是Oracle公司推出的一種高可用性、高性能的集群數(shù)據(jù)庫解

元宇宙概念是什么意思 什么是元宇宙概念 元宇宙概念是什么意思 什么是元宇宙概念 Feb 22, 2024 pm 03:55 PM

元宇宙是利用技術與現(xiàn)實世界映射與交互的虛幻世界。解析1元宇宙【Metaverse】是充分利用技術方式進行鏈接與創(chuàng)造的,與現(xiàn)實世界映射與交互的虛幻世界,擁有最新型社會發(fā)展體制的數(shù)據(jù)生活空間。 2元宇宙本質(zhì)上是對現(xiàn)實世界的虛擬技術、數(shù)字化過程,需要對內(nèi)容生產(chǎn)、經(jīng)濟系統(tǒng)、客戶體驗和實體世界內(nèi)容等進行大量改造。 3但元宇宙的發(fā)展趨勢是循序漸進的,是在共享的基礎設施、標準規(guī)定及協(xié)議的支撐下,由許多工具、平臺不斷結(jié)合、進化而最終成型。補充:元宇宙是什么構(gòu)成的1元宇宙由Meta和Verse構(gòu)成,Meta是超越,V

Golang的gc優(yōu)化策略探討 Golang的gc優(yōu)化策略探討 Mar 06, 2024 pm 02:39 PM

Golang的垃圾回收(GC)一直是開發(fā)者們關注的一個熱門話題。Golang作為一門快速的編程語言,其自帶的垃圾回收器能夠很好地管理內(nèi)存,但隨著程序規(guī)模的增大,有時候會出現(xiàn)一些性能問題。本文將探討Golang的GC優(yōu)化策略,并提供一些具體的代碼示例。Golang中的垃圾回收Golang的垃圾回收器采用的是基于并發(fā)標記-清除(concurrentmark-s

掌握Spring MVC的關鍵概念:了解這些重要特性 掌握Spring MVC的關鍵概念:了解這些重要特性 Dec 29, 2023 am 09:14 AM

了解SpringMVC的關鍵特性:掌握這些重要的概念,需要具體代碼示例SpringMVC是一種基于Java的Web應用開發(fā)框架,它通過模型-視圖-控制器(MVC)的架構(gòu)模式來幫助開發(fā)人員構(gòu)建靈活可擴展的Web應用程序。了解和掌握SpringMVC的關鍵特性將使我們能夠更加有效地開發(fā)和管理我們的Web應用程序。本文將介紹一些SpringMVC的重要概念

使用類的概念編寫Java程序來計算矩形的面積和周長 使用類的概念編寫Java程序來計算矩形的面積和周長 Sep 03, 2023 am 11:37 AM

Java語言是當今世界上最常用的面向?qū)ο缶幊陶Z言之一。類的概念是面向?qū)ο笳Z言中最重要的特性之一。一個類就像一個對象的藍圖。例如,當我們想要建造一座房子時,我們首先創(chuàng)建一份房子的藍圖,換句話說,我們創(chuàng)建一個顯示我們將如何建造房子的計劃。根據(jù)這個計劃,我們可以建造許多房子。同樣地,使用類,我們可以創(chuàng)建許多對象。類是創(chuàng)建許多對象的藍圖,其中對象是真實世界的實體,如汽車、自行車、筆等。一個類具有所有對象的特征,而對象具有這些特征的值。在本文中,我們將使用類的概念編寫一個Java程序,以找到矩形的周長和面

Java Queue隊列的基本概念與基本操作 Java Queue隊列的基本概念與基本操作 Jan 13, 2024 pm 01:04 PM

JavaQueue隊列的基本概念與操作隊列(Queue)是一種常見的數(shù)據(jù)結(jié)構(gòu),它按照先進先出(FIFO)的原則進行操作。在Java編程中,我們可以使用Queue接口和它的實現(xiàn)類來實現(xiàn)隊列的功能。本文將介紹Queue的基本概念以及常用的操作,并給出具體的代碼示例。一、隊列的基本概念隊列是一種線性數(shù)據(jù)結(jié)構(gòu),它有兩個基本操作:入隊(enqueue)和出隊(deq

Oracle主目錄是什么?詳解Oracle主目錄的概念和作用 Oracle主目錄是什么?詳解Oracle主目錄的概念和作用 Mar 08, 2024 am 08:18 AM

標題:Oracle主目錄:概念、作用與代碼示例Oracle數(shù)據(jù)庫中的主目錄(MasterCatalog)是數(shù)據(jù)庫的基礎目錄結(jié)構(gòu),用于存儲關于數(shù)據(jù)庫對象和其它數(shù)據(jù)庫信息的元數(shù)據(jù)。主目錄扮演著數(shù)據(jù)庫的管理中心角色,記錄了數(shù)據(jù)庫中所有對象的信息,如表、索引、視圖、用戶等,同時也包括了數(shù)據(jù)庫的配置信息和權(quán)限信息。在Oracle數(shù)據(jù)庫中,主目錄的概念十分重要,它被用

See all articles