真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

萬字詳解JVM,讓你一文吃透

摘要:本文將帶大家詳細(xì)地了解關(guān)于JVM的一些知識點。

本文分享自華為云社區(qū)《【JVM】關(guān)于JVM,你需要掌握這些 | 一文徹底吃透JVM系列》,作者: 冰 河 。

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、網(wǎng)站制作、禪城網(wǎng)絡(luò)推廣、重慶小程序開發(fā)、禪城網(wǎng)絡(luò)營銷、禪城企業(yè)策劃、禪城品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供禪城建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com

JDK 是什么?

JDK 是用于支持 Java 程序開發(fā)的最小環(huán)境。

  1. Java 程序設(shè)計語言
  2. Java 虛擬機(jī)
  3. Java API類庫

JRE 是什么?

JRE 是支持 Java 程序運行的標(biāo)準(zhǔn)環(huán)境。

  1. Java SE API 子集
  2. Java 虛擬機(jī)

Java歷史版本的特性?

Java Version SE 5.0

  • 引入泛型;
  • 增強(qiáng)循環(huán),可以使用迭代方式;
  • 自動裝箱與自動拆箱;
  • 類型安全的枚舉;
  • 可變參數(shù);
  • 靜態(tài)引入;
  • 元數(shù)據(jù)(注解);
  • 引入Instrumentation。

Java Version SE 6

  • 支持腳本語言;
  • 引入JDBC 4.0 API;
  • 引入Java Compiler API;
  • 可插拔注解;
  • 增加對Native PKI(Public Key Infrastructure)、Java GSS(Generic Security Service)、Kerberos和LDAP(Lightweight Directory Access Protocol)的支持;
  • 繼承Web Services;
  • 做了很多優(yōu)化。

Java Version SE 7

  • switch語句塊中允許以字符串作為分支條件;
  • 在創(chuàng)建泛型對象時應(yīng)用類型推斷;
  • 在一個語句塊中捕獲多種異常;
  • 支持動態(tài)語言;
  • 支持try-with-resources;
  • 引入Java NIO.2開發(fā)包;
  • 數(shù)值類型可以用2進(jìn)制字符串表示,并且可以在字符串表示中添加下劃線;
  • 鉆石型語法;
  • null值的自動處理。

Java 8

  • 函數(shù)式接口
  • Lambda表達(dá)式
  • Stream API
  • 接口的增強(qiáng)
  • 時間日期增強(qiáng)API
  • 重復(fù)注解與類型注解
  • 默認(rèn)方法與靜態(tài)方法
  • Optional 容器類

運行時數(shù)據(jù)區(qū)域包括哪些?

  1. 程序計數(shù)器
  2. Java 虛擬機(jī)棧
  3. 本地方法棧
  4. Java 堆
  5. 方法區(qū)
  6. 運行時常量池
  7. 直接內(nèi)存

程序計數(shù)器(線程私有)

程序計數(shù)器(Program Counter Register)是一塊較小的內(nèi)存空間,可以看作是當(dāng)前線程所執(zhí)行字節(jié)碼的行號指示器。分支、循環(huán)、跳轉(zhuǎn)、異常處理、線程恢復(fù)等基礎(chǔ)功能都需要依賴這個計數(shù)器完成。

由于 Java 虛擬機(jī)的多線程是通過線程輪流切換并分配處理器執(zhí)行時間的方式實現(xiàn)的。為了線程切換后能恢復(fù)到正確的執(zhí)行位置,每條線程都需要一個獨立的程序計數(shù)器,各線程之間的計數(shù)器互不影響,獨立存儲。

  1. 如果線程正在執(zhí)行的是一個 Java 方法,計數(shù)器記錄的是正在執(zhí)行的虛擬機(jī)字節(jié)碼指令的地址;
  2. 如果正在執(zhí)行的是 Native 方法,這個計數(shù)器的值為空。

程序計數(shù)器是唯一一個沒有規(guī)定任何 OutOfMemoryError 的區(qū)域。

Java 虛擬機(jī)棧(線程私有)

Java 虛擬機(jī)棧(Java Virtual Machine Stacks)是線程私有的,生命周期與線程相同。
虛擬機(jī)棧描述的是 Java 方法執(zhí)行的內(nèi)存模型:每個方法被執(zhí)行的時候都會創(chuàng)建一個棧幀(Stack Frame),存儲

  1. 局部變量表
  2. 操作棧
  3. 動態(tài)鏈接
  4. 方法出口

每一個方法被調(diào)用到執(zhí)行完成的過程,就對應(yīng)著一個棧幀在虛擬機(jī)棧中從入棧到出棧的過程。

這個區(qū)域有兩種異常情況:

  1. StackOverflowError:線程請求的棧深度大于虛擬機(jī)所允許的深度
  2. OutOfMemoryError:虛擬機(jī)棧擴(kuò)展到無法申請足夠的內(nèi)存時

本地方法棧(線程私有)

虛擬機(jī)棧為虛擬機(jī)執(zhí)行 Java 方法(字節(jié)碼)服務(wù)。

本地方法棧(Native Method Stacks)為虛擬機(jī)使用到的 Native 方法服務(wù)。

Java 堆(線程共享)

Java 堆(Java Heap)是 Java 虛擬機(jī)中內(nèi)存最大的一塊。Java 堆在虛擬機(jī)啟動時創(chuàng)建,被所有線程共享。

作用:存放對象實例。垃圾收集器主要管理的就是 Java 堆。Java 堆在物理上可以不連續(xù),只要邏輯上連續(xù)即可。

方法區(qū)(線程共享)

方法區(qū)(Method Area)被所有線程共享,用于存儲已被虛擬機(jī)加載的類信息、常量、靜態(tài)變量、即時編譯器編譯后的代碼等數(shù)據(jù)。

和 Java 堆一樣,不需要連續(xù)的內(nèi)存,可以選擇固定的大小,更可以選擇不實現(xiàn)垃圾收集。

運行時常量池

運行時常量池(Runtime Constant Pool)是方法區(qū)的一部分。保存 Class 文件中的符號引用、翻譯出來的直接引用。運行時常量池可以在運行期間將新的常量放入池中。

Java 中對象訪問是如何進(jìn)行的?

Object obj = new Object();

網(wǎng)頁題目:萬字詳解JVM,讓你一文吃透
標(biāo)題來源:http://weahome.cn/article/dsoidos.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部