1. GC是什麼為什麼要有GC
GC:Java的垃圾回收器。
Java是由C++發展來的。它擯棄了C++中一些繁瑣容易出錯的東西。其中有一條就是這個GC。
寫C/C++程序,程序員定義了一個變數,就是在內存中開辟了一段相應的空間來存值。內存再大也是有限的,所以當程序不再需要使用某個變數的時候,就需要釋放這個內存空間資源,好讓別的變數來用它。在C/C++中,釋放無用變數內存空間的事情要由程序員自己來解決。就是說當程序員認為變數沒用了,就應當寫一條代碼,釋放它佔用的內存。這樣才能最大程度地避免內存泄露和資源浪費。但是這樣顯然是非常繁瑣的。程序比較大,變數多的時候往往程序員就忘記釋放內存或者在不該釋放的時候釋放內存了。而且釋放內存這種事情,從開發角度說,不應當是程序員所應當關注的。程序員所要做的應該是實現所需要的程序功能,而不是耗費大量精力在內存的分配釋放上。
Java有了GC,就不需要程序員去人工釋放內存空間。當Java虛擬機發覺內存資源緊張的時候,就會自動地去清理無用變數所佔用的內存空間。當然,如果需要,程序員可以在Java程序中顯式地使用System.gc()來強制進行一次立即的內存清理。
2. gc是什麼意思
GC有多層含義,一是計算機術語,指Garbage
Collection;二是網路用語,支持的意思;三是網路域中的GC,就是「全局目錄」Global
Catalog;四是科研用語,即Gas
Chromatography(氣相色譜法)。
3. 什麼是GC,GC是什麼意思為什麼要有GC
為什麼要有GC? 首先JAVA和ASP.NET都有GC 垃圾回收 (garbage collection, GC) 一個跟蹤過程,它傳遞性地跟蹤指向當前使用的對象的所有指針,以便找到可以引用的所有對象,然後重新使用在此跟蹤過程中未找到的任何堆內存。公共語言運行庫垃圾回收器還壓縮使用中的內存,以縮小堆所需要的工作空間 因為你沒有足夠多內存,並且,你挺懶,不去自己清理內存,所以就有了 GC 什麼是GC GC的全稱是garbage collection,中文名稱垃圾回收,是.net中對內存管理的一種功能。垃圾回收器跟蹤並回收託管內存中分配的對象,定期執行垃圾回收以回收分配給沒有有效引用的對象的內存。當使用可用內存不能滿足內存請求時,GC會自動進行。 在進行垃圾回收時,垃圾回收器回首先搜索內存中的託管對象,然後從託管代碼中搜索被引用的對象並標記為有效,接著釋放沒有被標記為有效的對象並收回內存,最後整理內存將有效對象挪動到一起。這就是GC的四個步驟。 由上可見,GC是很影響性能的,所以一般說來這種事情況還是盡量少發生為好。 為了減少一些性能影響,.net的GC支持對象老化,或者說分代的概念,代是對象在內存中相對存現時期的度量單位,對象的代數或存現時期說明對象所屬的代。目前.net的垃圾回收器支持三代。每進行一次GC,沒有被回收的對象就自動提升一代。較近創建的對象屬於較新的代,比在應用程序生命周期中較早創建的對象的代數低。最近代中的對象位於零代中。
4. gc是什麼
罪惡王冠。。一部動漫。
5. GC是什麼 為什麼要有GC
GC是垃圾收集器。Java 程序員不用擔心內存管理,因為垃圾收集器會自動進行管理。要請求垃圾收集,可以調用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
6. gc是什麼意思啊
常用的GC演算法:
1)標記非活動對象
--何為非活動對象,通俗的講,就是無引用的對象。
追蹤root對象演算法: 深度追蹤root對象,將heap中所有被引用到的root做標志,所有未被標志的對象視為非活動對象,所佔用的空間視為非活動內存。
2)清理非活動對象
Copy演算法:
方法:將內存分為兩個區域(from space和to space)。所有的對象分配內存都分配到from space。在清理非活動對象階段,把所有標志為活動的對象,到to space,之後清楚from space空間。然後互換from sapce和to space的身份。既原先的from space變成to sapce,原先的to space變成from space。每次清理,重復上述過程。
優點:演算法不理會非活動對象,數量僅僅取決為活動對象的數量。並且在的同時,整理了heap空間,即,to space的空間使用始終是連續的,內存使用效率得到提高。
缺點:劃分from space和to space,內存的使用率是1/2。
Compaction演算法:
方法:在清理非活動對象階段,刪除非活動對象佔用內存,並且把活動對象向heap的底部移動,直到所有的活動對象被移到heap的一側。
優點:無須劃分from sapce和to space,提高內存的使用率。並且compaction後的內存空間也是連續分配的。
缺點:該演算法相對比較復雜。
sun jdk gc介紹:
在減少gc之前,先來看看來自IBM的一組統計數據:
98%的java對象,在創建之後不久就變成了非活動對象;只有2%的對象,會在長時間一直處於活動狀態。
如果能對這兩種對象區分對象,那麼會提交GC的效率。在sun jdk gc中(具體的說,是在jdk1.4之後的版本),提出了不同生命周期的GC策略。
young generation:
生命周期很短的對象,歸為young generation。由於生命周期很短,這部分對象在gc的時候,很大部分的對象已經成為非活動對象。因此針對young generation的對象,採用演算法,只需要將少量的存活下來的對象到to space。存活的對象數量越少,那麼演算法的效率越高。
young generation的gc稱為minor gc。經過數次minor gc,依舊存活的對象,將被移出young generation,移到tenured generation(下面將會介紹)
young generation分為:
eden:每當對象創建的時候,總是被分配在這個區域
survivor1:演算法中的from space
survivor2:演算法中的to sapce (備註:其中survivor1和survivor2的身份在每次minor gc後被互換)
minor gc的時候,會把eden+survivor1(2)的對象到survivor2(1)去。
tenured generation:
生命周期較常的對象,歸入到tenured generation。一般是經過多次minor gc,還 依舊存活的對象,將移入到tenured generation。(當然,在minor gc中如果存活的對象的超過survivor的容量,放不下的對象會直接移入到tenured generation)
tenured generation的gc稱為major gc,就是通常說的full gc。
採用compactiion演算法。由於tenured generaion區域比較大,而且通常對象生命周期都比較常,compaction需要一定時間。所以這部分的gc時間比較長。
minor gc可能引發full gc。當eden+from space的空間大於tenured generation區的剩餘空間時,會引發full gc。這是悲觀演算法,要確保eden+from space的對象如果都存活,必須有足夠的tenured generation空間存放這些對象。
Permanet Generation:
該區域比較穩定,主要用於存放classloader信息,比如類信息和method信息。
對於spring hibernate這些需要動態類型支持的框架,這個區域需要足夠的空間。
這部分內容相對比較理論,可以結合jstat,jmap等命令(當然也可以使用jconsole,jprofile,gciewer等工具),觀察jdk gc的情
7. GC是什麼意思
GC有多層含義,一是計算機術語,指Garbage
Collection;二是網路用語,支持的意思;三是網路域中的GC,就是「全局目錄」Global
Catalog;四是科研用語,即Gas
Chromatography(氣相色譜法)。
可能還指罪惡王冠(動漫),高潮
8. 何為GC投資,與VC投資有何關系
GC投資,即為成長性投資