jvm類載入迴圈依賴是怎麼解決的

時間 2021-06-02 01:20:56

1樓:JasonMing

你沒明白載入(load)和初始化(initialize)是兩個行為。

loader先把類載入到自己類載入器空間內,完全載入之後再觸發initialize,所以在你loadClass時候可以設定initialize=false。

這個過程的確有點像spring,先new物件(load)再set值(initialize)

2樓:ImKAIne

按啟動引數裡的-classpath宣告的順序載入,如果宣告的是資料夾,通過檔案系統io先掃到哪個jar就先載入哪個jar,乙個jar裡的按壓縮檔案索引目錄順序載入,另外由於雙親委派機制,被父載入過的class不會載入第二次

3樓:murphy

結論:和Spring的迴圈依賴比較類似。

類載入第一步裝載完成後,元資料區(原方法區)已經存在該class。只是整個載入過程未結束,其他執行緒不能直接使用,同時會因為鎖而block;而在同乙個執行緒中,鎖可重入,可引用到這個未完全初始化的class,而不會產生block的情況。

說回依賴,類載入過程產生對其他類的依賴、最早也要發生在準備階段,一般是在初始化階段。此時靜態屬性已經分配了記憶體空間、並賦了初值;因此在依賴類中反向引用本類變數是沒問題的。

結論中的類似,是指兩個方面:一.都是單例方式,先建立單例、再setter方式注入;二.

未完成「初始化/載入」的「bean/class」對外部其他執行緒是不可使用的,而並不影響當前執行緒。

無限迴圈小數是怎麼回事?

大鈾子 無限迴圈小數是怎麼回事?比如一公尺等於三尺,除不開,等於33.3迴圈,那市場上賣的尺,具體長度是多少?這個0.3迴圈怎麼做出來?無限迴圈小數,只是分數的一種,它和有限小數沒有任何差別。乙個分數是否是迴圈小數只取決於你使用的進製。1 3這個分數在三進製下就是乙個有限小數0.1。所以厘公尺怎麼做...

喜歡單曲迴圈的人是怎麼樣的人?

Apocalypse 聽歌取向大多是由當時狀態所定,為了加強情感主要聽外文歌是因為從小接觸的就是英文歌 日文歌最近也在聽陳奕迅的歌。能單曲迴圈的歌並不是只要好聽就行,必須能從中聯想到過去,因此更偏愛老歌 想培養一首好聽的新歌真不容易 歌荒 非常懷舊 十分偏執於某件事物 不擅長改變 不擅長交流 骨子裡...

小時候是留守兒童,20歲依賴父母怎麼辦?

阿曼達 我留守20多年,說實話長大了那種感情就不需要了,長大了他們對我再好,我都感覺好彆扭不自在,而且他們的好是有目的的,有一次吵架他們說我賺的每一分錢都是他們的。 小四 我也是留守兒童 我爺爺一共9個孫子,3個孫女 幾乎都是留守兒童 因為家在農村,家裡窮,沒辦法,父輩只能出去打工掙錢養家你要理解家...