lombok不推薦使用 什么情況下會觸發(fā)minor gc和full gc?
什么情況下會觸發(fā)minor gc和full gc?當(dāng)JVM無法為新對象分配空間時,例如Eden區(qū)域已滿時,會觸發(fā)Minorgc。因此,分配率越高,執(zhí)行minorgc的頻率就越高。內(nèi)存池已滿時,將復(fù)制所
什么情況下會觸發(fā)minor gc和full gc?
當(dāng)JVM無法為新對象分配空間時,例如Eden區(qū)域已滿時,會觸發(fā)Minorgc。因此,分配率越高,執(zhí)行minorgc的頻率就越高。內(nèi)存池已滿時,將復(fù)制所有內(nèi)容,指針將從0開始跟蹤可用內(nèi)存。伊甸園和幸存者區(qū)域被標(biāo)記和復(fù)制,而不是經(jīng)典的標(biāo)記、掃描、壓縮和清理操作。因此,在伊甸園和幸存者區(qū)域沒有記憶碎片。寫入指針始終位于正在使用的內(nèi)存池的頂部。執(zhí)行minorgc操作時,永久生成不受影響。在標(biāo)記階段,常代與幼代的關(guān)系被視為根,而幼代與常代的關(guān)系被直接忽略。對傳統(tǒng)認(rèn)知的質(zhì)疑,所有minorgc都會觸發(fā)一個“stop the world”來停止應(yīng)用程序的線程。對于大多數(shù)應(yīng)用程序,暫停引起的延遲可以忽略不計。事實是,伊甸園中的大多數(shù)物體都可以被視為垃圾,永遠(yuǎn)不會被復(fù)制到幸存者或老年人的空間中。相反,如果Eden中的大多數(shù)新對象不滿足GC條件,minorgc執(zhí)行的暫停時間會更長。
什么情況下會觸發(fā)minor gc和full gc?
當(dāng)JVM無法為新對象分配空間時,例如當(dāng)Eden區(qū)域已滿時,會觸發(fā)次要GC。因此,分配率越高,執(zhí)行次要GC的頻率就越高。內(nèi)存池已滿時,將復(fù)制所有內(nèi)容,指針將從0開始跟蹤可用內(nèi)存。伊甸園和幸存者區(qū)域被標(biāo)記和復(fù)制,而不是經(jīng)典的標(biāo)記、掃描、壓縮和清理操作。因此,在伊甸園和幸存者區(qū)域沒有記憶碎片。寫入指針始終位于正在使用的內(nèi)存池的頂部。當(dāng)執(zhí)行次要GC操作時,永久生成不受影響。在標(biāo)記階段,將永久世代到年輕世代的引用視為GC根,而直接忽略年輕世代到永久世代的引用。質(zhì)疑傳統(tǒng)的認(rèn)知,所有次要的gc都會觸發(fā)一個“stop the world”來停止應(yīng)用程序的線程。對于大多數(shù)應(yīng)用程序,暫停引起的延遲可以忽略不計。事實是,伊甸園中的大多數(shù)物體都可以被視為垃圾,永遠(yuǎn)不會被復(fù)制到幸存者或老年人的空間中。相反,如果伊甸園中的大多數(shù)新對象不符合GC條件,那么小GC的執(zhí)行將被暫停很長一段時間。
程序Bug是如何產(chǎn)生的?
好問題。作為一個程序員,看到這個問題,我忍不住想說點什么。就像我以前看到的一個問題:為什么會有程序錯誤?程序員不能一次完成嗎?
首先,我們需要了解程序開發(fā)的整個過程。
1. 公司的商業(yè)大亨們希望通過調(diào)查或自己的想法來開發(fā)一個程序;或者他們希望在收到其他公司(即客戶)的想法后開發(fā)一個程序。
2. 公司產(chǎn)品負(fù)責(zé)人通過與方案提出人的溝通,確定具體細(xì)節(jié),做什么樣的方案,并形成文件,即所謂的需求調(diào)研。
3. 產(chǎn)品需求確定后,開發(fā)負(fù)責(zé)人將整理好的需求文件發(fā)給開發(fā)人員,開發(fā)人員參照這些文件進(jìn)行開發(fā)。
4. 測試boss,程序開發(fā)完成后,不會直接提供給客戶或拿出來使用。相反,它需要經(jīng)過公司測試才能完成程序測試,這樣才能確保在對外提供之前沒有問題。
總之,一個程序從最初的想法到最終的開發(fā)有一系列的步驟。從產(chǎn)品轉(zhuǎn)移到開發(fā),可能會發(fā)生巨大的變化。最終,客戶想要的是一種,什么樣的開發(fā),或者客戶在開發(fā)過程中有了新的想法,也就是所謂的需求變化,導(dǎo)致程序總是不能按照既定的路線開發(fā)。
當(dāng)然,上線后會有一些問題。有一個經(jīng)典的例子:為什么有人在使用壓力鍋時會爆炸?很明顯,廠家已經(jīng)按照說明書做了很多次檢測,但你沒想到的是,客戶不用按照說明書操作,所以