JVM快速入門

来源:https://www.cnblogs.com/ygmzj/archive/2022/06/22/16401221.html
-Advertisement-
Play Games

1. JVM的位置 JVM是運行在操作系統之上的。 2. JVM體繫結構 3. 類載入器 類載入器的作用:載入class文件 載入器:①.ApplicationClassLoader應用程式類載入器,主要負責載入當前應用classpath路徑下的所有類; ②.ExtentionClassLoader ...


1. JVM的位置

JVM是運行在操作系統之上的。

 

2. JVM體繫結構

 

 

 

3. 類載入器

類載入器的作用:載入class文件

載入器:①.ApplicationClassLoader應用程式類載入器,主要負責載入當前應用classpath路徑下的所有類;

            ②.ExtentionClassLoader擴展類載入器,主要負責載入\lib\ext目錄下的jar包和class文件;

            ③.BootstrapClassLoader啟動類載入器,主要負責載入\lib下的tr、resources.jar、charset.jar和class等;

            ④.UserClassLoader用戶自定義類載入器,可載入指定路徑的class文件。

 

4. 雙親委派機制

類載入器收到類載入的請求,會將請求向上委托給父類載入器區完成,一直到BootstrapClassLoader啟動類載入器。

啟動類載入器收到載入類的請求會檢查這個類能否載入,能夠載入則完成。不能載入就拋出異常,通知子載入器進行載入。

 

 

5. 沙箱安全機制

   ①. Java安全模型的核心就是java沙箱(sandbox),什麼是沙箱?沙箱是限製程序訪問系統資源的環境。沙箱機制就是將java代碼

限定在JVM虛擬機特定的運行範圍中,並且嚴格限制代碼對本地資源(CPU、記憶體、文件系統、網路)的訪問,通過這樣的措施

來保證對代碼的有效隔離,防止對本地系統造成破壞。

   ②. 在java中將執行程式分為本地代碼和遠程代碼兩類,本地代碼預設是可信任的,而遠程代碼則被視為不受信任的。對於授信的

本地代碼來說,可以訪問一切系統資源。

 

 

6. native

凡是帶有native關鍵字的代碼,說明java代碼達不到了,需要調用底層c語言的庫。

本地方法庫的作用:擴展java的使用,融合不同的編程語言為Java所用!在java誕生的時候,c、c++橫行,

想要立足必須調用c、c++的程式,所以它在記憶體區域中專門開闢了一塊標記區域:Native Method Stack,

登記native方法。在最終執行的時候,載入本地方法庫中的方法。

 

7. 方法區

Method Area方法區:方法區是被所有線程共用,所有欄位和方法位元組碼,以及一些特殊方法,如構造函數,介面代碼

也在此定義。簡單說,所有定義的方法的信息都保存在該區域,該區域是屬於共用區間;靜態變數、常量、類信息(

構造方法、介面定義)、運行時的常量池存在方法區中,但是實例變數存在堆記憶體中,和方法區無關。

 

8. 棧

 

9.堆

一個JVM只有一個堆(Heap)記憶體,堆記憶體的大小是可以調節的。

類載入器讀取到類文件後,一般會把什麼東西放到堆中?類,方法,常量,變數,保存我們所有引用類型的真實對象。

堆記憶體中還可以細分為三個區域: 新生區(Eden、ServivorTo、ServivorFrom)、養老區(Old)、永久區(Perm)

GC垃圾回收,主要是在伊甸園區和養老區。

 

 

10. 新生區、永久區、堆記憶體調優

新生區: ①類誕生和成長的地方,甚至死去。

             ②伊甸園,所有的對象都是在伊甸園區new出來的

             ③幸存者區

真理: 經過研究發現,99%的對象都是臨時對象!

永久區: 這個區域存儲的是java運行時的一些環境或類信息,這個區域不存在垃圾回收,關閉JVM虛擬機就會釋放這個區域的記憶體。

GC分為兩類: ①輕GC(針對新生代,偶爾針對下幸存區)   ②重GC(全局GC,所有東西都釋放一遍,釋放記憶體)

 

11. 使用Jprofiler工具分析OOM原因

Jprofiler作用: 分析Dump記憶體文件,快速定位記憶體泄漏;獲得堆中的數據;獲得大的對象

-Xms 設置初始化記憶體分配大小(預設為1/64)

-Xmx 設置最大分配記憶體(預設1/4)

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 目錄 一.簡介 二.效果演示 三.源碼下載 四.猜你喜歡 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場 零基礎 O ...
  • 前言 我們在學習機器學習相關內容時,一般是不需要我們自己去爬取數據的,因為很多的演算法學習很友好的幫助我們打包好了相關數據,但是這並不代表我們不需要進行學習和瞭解相關知識。在這裡我們瞭解三種數據的爬取:鮮花/明星圖像的爬取、中國藝人圖像的爬取、股票數據的爬取。分別對著三種爬蟲進行學習和使用。 體會 個 ...
  • 03數值計算(V) 1. 計算矩形面積 類型:數值運算 描述 用戶輸入矩形的長和寬,計算其面積並輸出。 a = eval(input()) #輸入整數字元串,轉換為整數;輸入浮點數字元串,轉換為浮點數 b = float(input()) #輸入整數和浮點數,都轉換為浮點數 c = int(inpu ...
  • python基礎02 條件控制 python條件語句是通過一條或多條語句的執行結果(Ture或者False)來執行的代碼塊 python中用elif代替了else if,所以if語句的關鍵字為:if-elif-else。 註意 每個條件後面都要用冒號:,表示接下來是滿足條件後要執行的語句塊 使用縮進 ...
  • 1、opencc-python 首先介紹opencc中的Python實現庫,它具有安裝簡單,翻譯準確,使用方便等優點。對於我們日常的需求完全能夠勝任。 1.1安裝opencc-python 首先在terminal中安裝opencc-python。 pip install opencc-python ...
  • 人生苦短,我用Python~某寶秒殺,用毫秒級的精準度來搶購!你還在為各種活動秒殺 搶不過別人而煩惱嗎?今天出一期 利用Python搶購秒殺商品的文章 目錄 ​ 項目環境 某寶搶購流程分析 程式實現思路 代碼實踐與梳理 項目環境 ​ 操作系統:Windows 10 開發環境:python3.7 ID ...
  • #數據類型的擴展 P24 ##1.整數擴展 ###進位: 二級制:0b 十進位:無 八進位:0 十六進位:0x 代碼: int i = 10; int i2 = 010; int i3 = 0x10; System.out.println(i); System.out.println(i2); Sy ...
  • 前言 相比大家都聽過自動化生產線、自動化辦公等辭彙,在沒有人工干預的情況下,機器可以自己完成各項任務,這大大提升了工作 效率。 編程世界里有各種各樣的自動化腳本,來完成不同的任務。 尤其Python非常適合編寫自動化腳本,因為它語法簡潔易懂,而且有豐富的第三方工具庫。 這次我們使用Python來實現 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...