java JVM

每一個Java虛擬機都由一個類加載器子系統(class loader subsystem),負責加載程序中的類型(類和接口),并賦予唯一的名字。每一個Java虛擬機都有一個執行引擎(execution engine)負責執行被加載類中包含的指令。
數據區中的一部分是整個程序共有,其他部分被單獨的線程控制。每一個Java虛擬機都包含方法區(method area)和堆(heap),他們都被整個程序共享。Java虛擬機加載并解析一個類以后,將從類文件中解析出來的信息保存與方法區中。程序執行時創建的 對象都保存在堆中。 
Java虛擬機中的類加載器分為兩種:原始類加載器(primordial class loader)和類加載器對象(class loader objects)。原始類加載器是Java虛擬機實現的一部分,類加載器對象是運行中的程序的一部分。不同類加載器加載的類被不同的命名空間所分割。
像其他對象一樣,類加載器對象和Class對象都保存在堆中,被加載的信息被保存在方法區中。1、加載、連接、初始化(Loading, Linking and Initialization)
類加載子系統不僅僅負責定位并加載類文件,他按照以下嚴格的步驟作了很多其他的事情:1)、加載:尋找并導入指定類型(類和接口)的二進制信息2)、連接:進行驗證、準備和解析①驗證:確保導入類型的正確性②準備:為類型分配內存并初始化為默認值③解析:將字符引用解析為直接飲用3)、初始化:調用Java代碼,初始化類變量為合適的值

此圖看出jvm內存結構

JVM內存結構主要包括兩個子系統和兩個組件。兩個子系統分別是Classloader子系統和Executionengine(執行引擎)子系統;兩個組件分別是Runtimedataarea(運行時數據區域)組件和Nativeinterface(本地接口)組件。

類加載機制

JVM的類加載是通過ClassLoader及其子類來完成的,類的層次關系和加載順序可以由下圖來描述:

?

?

雙親委派模型的工作過程?

1、當前 ClassLoader 首先從自己已經加載的類中,查詢是否此類已經加載,如果已經加載則直接返回原來已經加載的類。? ? 一定程度上防止自有的類被篡改

每個類加載器都有自己的加載緩存,當一個類被加載了以后就會放入緩存,等下次加載的時候就可以直接返回了。

2、當前 ClassLoader 的緩存中沒有找到被加載的類的時候

委托父類加載器去加載,父類加載器采用同樣的策略,首先查看自己的緩存,然后委托父類的父類去加載,一直到 bootstrap ClassLoader。
當所有的父類加載器都沒有加載的時候,再由當前的類加載器加載,并將其放入它自己的緩存中,以便下次有加載請求的時候直接返回。

?

 

轉載于:https://www.cnblogs.com/upward/p/11295125.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276933.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276933.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276933.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

馬化騰聯手10余位科學家發起科學探索獎,騰訊基金投入10億元啟動資金

11月9日消息,據騰訊科技報道,騰訊基金會于騰訊公司成立20周年之際宣布,騰訊公司董事會主席兼首席執行官,騰訊基金會發起人馬化騰,與北京大學教授饒毅,攜手楊振寧、毛淑德、何華武、鄔賀銓、李培根、陳十一、…

給Domino系統管理員的十二項建議

Domino系統管理員的日常工作就是維護Domino系統的正常運行。以下簡要說明了管理員所必做的一些工作。對于系統管理員,特別是新建系統的管理員來說,這些建議能幫助他們完成基本的維護工作。 根據許多資深的Domino管理員和咨詢人員的經驗,我們對…

delphi 軟件在線人數統計_8款值得學習的科研論文作圖軟件

寫在前面科研繪圖在國外已經非常流行,且被高度重視,國內科研人員也越來越重視科研方面的繪圖。不少科研工作者,包括在讀的博士生、研究生等可能都有這樣的體會:千辛萬苦得來的實驗結果,不知道該如何展現給別人?曾經有…

技術管理—管理書籍推薦

技術出身,考慮接觸下管理方面的知識。也許管理真的適合你,角色認知?角色實踐?角色勝任!最后愛上它! 我最喜歡的一本書--高效能人士的七個習慣 作者:史蒂芬柯維(Stephen Richards Covey) 該…

JS 幾種數據類型及其轉換

ECMAScript 標準定義了 7 種數據類型: Number;String;Boolean;Symbol;Null;Undefined;Object 。通常,數值、字符串、布爾值、undefined和null這五種類型,合稱為簡單類型的值&#xf…

網絡虛擬化有幾種實現方式_停車場管理系統的防砸車功能有幾種方式?如何實現?...

原標題:停車場管理系統的防砸車功能有幾種方式?如何實現?前言0101正文一、壓力波防砸裝置也叫遇阻防砸,主要是安裝遇阻返回裝置,當道閘桿下落過程中接觸到車輛或者行人(接觸力度是可以調節的),裝置道閘桿底…

Socket 死連接詳解

當使用 Socket 進行通信時,由于各種不同的因素,都有可能導致死連接停留在服務器端,假如服務端需要處理的連接較多,就有可能造成服務器資源嚴重浪費,對此,本文將闡述其原理以及解決方法。 在寫 Socket 進行通…

[Swift]LeetCode1146. 快照數組 | Snapshot Array

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★?微信公眾號:山青詠芝(shanqingyongzhi)?博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)?GitHub地址&a…

aspnet中gridview文本只顯示開始幾個文本_軟網推薦:三個小軟件 輕松解決文本操作難題...

TXT文本操作在Windows操作中算是比較容易的事了,但簡單的文本操作也會遇到難題。例如,對于我們反復需要使用的多個信息,如果僅靠CtrlC和CtrlV來回復制、粘貼,效率會極低;再如,對于一些軟件組件中顯示的文本…

剛被IBM收購的紅帽,它的下一站是中國

前不久IBM斥資340億美元收購紅帽的新聞震驚了所有人,這個金額是互聯網上第三大交易,也是開源史上最大交易。這個收購背后到底有哪些目的?紅帽接下來會做什么?11月6日紅帽在北京舉辦紅帽論壇,向外界介紹了紅帽的想法。 …

驗證DetailsView插入數據不為空

驗證DetailsView插入數據不為空,在對象數據源ObjectDataScource(ChannelDS)的Inserting事件中寫如下代碼:protected void ChannelDS_Inserting(object sender, ObjectDataSourceMethodEventArgs e) { string name "";…

為什么onenote一直在加載_OneNote:科研筆記獨一無二的無敵利器

每個人都夢想著自己有超乎常人的記憶力,擁有者過目不忘的技能,從此走向人生巔峰……然而我們都不是那樣的人,在這個高速發展的數字新信息時代,進行有效的記憶,保存我們隨時到來的靈感等,這就需要我們進行筆…

WPF 實現 DataGrid/ListView 分頁控件

原文:WPF 實現 DataGrid/ListView 分頁控件在WPF中,通常會選用DataGrid/ListView進行數據展示,如果數據量不多,可以直接一個頁面顯示出來。如果數據量很大,2000條數據,一次性顯示在一個頁面中,不僅消耗資源…

Sql Server 中漢字處理排序規則,全角半角

--1. 為數據庫指定排序規則CREATEDATABASEdb COLLATE Chinese_PRC_CI_ASGOALTERDATABASEdb COLLATE Chinese_PRC_BINGO/**//**/--2. 為表中的列指定排序規則CREATETABLEtb(col1 varchar(10),col2 varchar(10) COLLATE Chinese_PRC_CI_AS)GOALTERTABLEtb ADDcol3 varchar(10) CO…

解決局域網設置固定IP后無法上網?

1.cmd中輸入ipconfig /all查看ip和dns的狀態 2.查看自動獲取的dns是什么,然后手動設置ip和dns時,和自動獲取的保持一樣即可 注解:設置后還是無法上網后主要檢查ip與dns是否設置錯誤. 轉載于:https://www.cnblogs.com/yanans/p/11301061.html

鼠標輸入

一、隱藏并捕捉光標 偏航角和俯仰角是通過鼠標移動獲得的,水平的移動影響偏航角,豎直的移動影響俯仰角。 原理是,存儲上一幀鼠標的位置,在當前幀中計算鼠標位置與上一幀的位置相差多少。如果水平/豎直差別越大,那么俯仰…

c#用canny算子做邊緣提取_機器視覺學習(三)邊緣檢測

一、邊緣檢測二、邊緣檢測流程三、Canny邊緣檢測前言邊緣檢測是圖像處理和計算機視覺中,尤其是特征提取中的一個研究領域。有許多方法用于邊緣檢測,它們的絕大部分可以劃分為兩類:基于一階導數首先計算邊緣強度, 通常用一階導數表…

一個有關Update類型的存儲過程的問題

CREATE PROCEDURE testupdateproc AS declare id int declare trandate datetime declare tranlimit int update test set trandatetrandate, tranlimittranlimit where test.idid GO 存儲過程語句如上,檢查語法是沒有問題的,但是在程序中執行時卻不行…

[20190805]在小程序中使用npm包

小程序是可以使用npm包的 1. 初始化npm;(在項目目錄下輸入) npm init 此時項目文件夾會創建一個配置信息的package.json文件 2. 手動新建node_modules文件夾;(在項目目錄下新建) 3. 安裝npm包; …

bindresult必須在哪個位置_手機視頻剪輯工具哪個好?清爽視頻編輯APP有人推薦嗎?...

作為一個非常喜歡旅游的人,每次出門在外都喜歡發各種照片,以前發照片覺得就能夠表達自己的狀態和心情,但是隨著時間的變化發現,身邊的人都開始喜歡發視頻了。此前在飛機上拍攝了一段覺得不錯的天空視頻,想要制作成短片…