日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

浅谈JVM(一) ClassLoader的双亲委派和沙箱机制

發布時間:2024/2/28 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈JVM(一) ClassLoader的双亲委派和沙箱机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自?https://blog.csdn.net/start_lie/article/details/79016312

JVM(Java Virtual Machine)? ?java虛擬機?

JVM運行在操作系統之上,與計算機硬件沒有交互

JVM整體運行流程需要用到的資源 可以說分以下標紅的5部分組成

class files?被java命令運行 將類信息通過類裝載器(ClassLoader)加載并初始化生成 Class模版放入運行時數據區(Runtime Data Area)

運行時數據區包括 5部分 : 方法區 和 堆(線程公有)? ?java棧和本地方法棧和程序計數器(線程私有)

執行引擎(Execution Engine)負責從java棧中取得命令解釋成操作系統可識別命令,并交給操作系統執行

本地接口(Native Interface)和本地方法庫? 融合了別的編程語言(C/C++)為java所用,java誕生時c和c++處于統治地位,

java或多或少會使用c/c++實現一些底層方法(native)方法,于是專門在內存中開辟了一塊區域來登記native方法,

在執行引擎執行時加載native libraies,目前這些方法使用越來越少了.

今天總結一部分

ClassLoader

負責加載class文件,class文件在文件開頭有特定的文件標示,并且ClassLoader只負責class文件的加載,至于它是否可以運行,則由Execution Engine決定

目前了解4種類加載器:

1.BootstrapClassLoader 啟動類加載器

這貨是用C++編寫的? ?是最頂層的類裝載器,用來加載jre/lib/rt.jar下的類

2.ExtensionClassLoader拓展類加載器

用來加載jre/lib/ext/*.jar的所有類

3.AppClassLoader 應用類加載器

應用類加載器,也叫系統類加載器,用來加載當前應用classpath下的所有類

4.User-Definend 用戶自定義的類加載器

繼承 java.lang.ClassLoader類實現里面的方法,自定義加載類的方法

雙親委派機制

雙親委派模型的式作過程是:如果一個類加載器收到了類加載的請求,它首先不會自己去嘗試加載這個類,而是把這個請求委派給父類加載器去完成,每一個層次的類加載器都是如此,因此所有的加載請求最終都應該傳送到頂層的啟動類加載器中,只有當父加載器反饋自己無法完全這個加載請求時,子加載器才會嘗試自己去加載。

沙箱機制

沙箱機制是由基于雙親委派機制上 采取的一種JVM的自我保護機制,假設你要寫一個java.lang.String 的類,由于雙親委派機制的原理,此請求會先交給Bootstrap試圖進行加載,但是Bootstrap在加載類時首先通過包和類名查找rt.jar中有沒有該類,有則優先加載rt.jar包中的類,因此就保證了java的運行機制不會被破壞.


總結

以上是生活随笔為你收集整理的浅谈JVM(一) ClassLoader的双亲委派和沙箱机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。