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
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...