014 JVM中的兩個Survivor區

2021-07-11 09:29:04 字數 552 閱讀 6217

在jvm gc的分代機制中,年輕代中有兩個survivor區,為了便於交換,需要保證其中乙個為空,這個容易理解,但是為什麼需要兩個survivor區,而且很多網上資料中說在特殊情況下,可以配置為多個,並沒有說怎麼配置,也沒有說是什麼特殊情況。

和gc的copying演算法相關,既然是拷貝,就得有地方做from,有地方做to。

在原始的copying收集演算法裡,空間被分為兩半,叫做semispace。空間分配和**的過程就是把其中一半用作from來分配空間,當from快滿或滿足別的一些條件時將可到達的物件複製到to,並將from與to邏輯交換的過程。

單純的copying收集不能很好的應對長時間存活的物件,因為那樣的物件每次經歷收集的時候都還活著,帶來拷貝的開銷。出於權衡,hotspot裡目前除g1外都採用相似的方式實現分代式gc,並且在young gen都使用copying收集演算法。不過它使用的copying演算法是原始演算法的變種,留一塊較大的區域作為eden,在eden與old gen之間設定semispace來作為緩衝,讓「中等壽命」的物件盡量在進入old gen之前被收集掉。這就是hotspot的survivor spaces。

生活中的兩個小問題

看似簡單的問題,如果不小心,很容易掉進陷進裡哦o o 看題吧 第一題 有3個人去投宿,一晚30元.三個人每人掏了10元湊夠30元交給了老闆.後來老闆說今天優惠只要25元就夠了,拿出5元命令服務生退還給他們,服務生偷偷藏起了2元,然後,把剩下的3元錢分給了那三個人,每人分到1元.這樣,一開始每人掏了1...

獲取 List,List,List中的兩個變數

1 public listgetdepartlistbymain else return li listbd2 bedepartservice.getdepartlistbymain 說明 getdepartlistbymain方法中返回了list型別的兩個變數 bid,name 要獲取bid中的資...

GRASS GIS中兩個buffer演算法的差別

buffer是更早期的版本 buffer2智慧型了很多,看看效果圖,就會發現,buffer得到的是不需要再次處理的有效buffer內外圈圖 並且buffer2支援cap選擇,以及round選擇,tolerance也支援角度了 buffer.c效果圖 buffer2.c效果圖 buffer2.c中li...