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
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...