中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

jvm中怎么加載一個類

發布時間:2021-07-24 15:43:39 來源:億速云 閱讀:102 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關jvm中怎么加載一個類,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

  第一步:加載,雙親委派:啟動類加載器(jre/lib),系統擴展類加載器(ext/lib),應用類加載器(classpath),前者為c++編寫,所以系統加載器的parent為空,后面兩個類加載器都是通過啟動類加載器加載完成后才能使用。加載的過程就是查找字節流,可以通過網絡,也可以自己在代碼生成,也可以來源一個jar包。另外,同一個類,被不同的類加載器加載,那么他們將不是同一個類,java中通過類加載器和類的名稱來界定唯一,所以我們可以在一個應用成存在多個同名的類的不同實現。

  第二步:鏈接:(驗證,準備,解析) 驗證主要是校驗字節碼是否符合約束條件,一般在字節碼注入的時候關注的比較多。準備:給靜態字段分配內存,但是不會初始化,解析主要是為了將符號引用轉換為實際引用,可能會觸發方法中引用的類的加載。

  第三步:初始化,如果賦值的靜態變量是基礎類型或者字符串并且是final的話,該字段將被標記為常量池字段,另外靜態變量的賦值和靜態代碼塊,將被放在一個叫cinit的方法內被執行,為了保證cinit方法只會被執行一次,這個方法會加鎖,我們一般實現單例模式的時候為保證線程安全,會利用類的初始化上的鎖。 初始化只有在特定條件下才會被觸發,例如new 一個對象,反射被調用,靜態方法被調用等。

關于jvm中怎么加載一個類就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

jvm
AI

青海省| 五台县| 高淳县| 开江县| 郸城县| 芜湖县| 洛浦县| 天祝| 和龙市| 连云港市| 沭阳县| 盐源县| 连山| 南康市| 云阳县| 集安市| 丘北县| 达州市| 理塘县| 景洪市| 疏勒县| 壤塘县| 揭西县| 定陶县| 巴彦县| 大同县| 保德县| 子洲县| 南丰县| 灯塔市| 晴隆县| 象山县| 阿克陶县| 会同县| 黄大仙区| 名山县| 乌什县| 大丰市| 高州市| 勐海县| 思茅市|