五、Java12新特性概述-創(chuàng)新互聯(lián)

五、Java 12 新特性概述

JDK12 在 2019 年 3 月 19 號正式發(fā)布,不同于JDK11,JDK12并不是一個LTS版本。作為一個中間版本,JDK12版本特性增加較少。 2017年宣布的加速發(fā)布節(jié)奏要求每六個月發(fā)布一次功能,每季度更新一次,每三年發(fā)布一次長期支持(LTS)更新版本(或每六個版本一次)。

10年的息縣網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整息縣建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)從事“息縣網(wǎng)站設計”,“息縣網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
1、知識體系

在這里插入圖片描述

2、新功能和庫的更新 1、JEP334: JVM常量API

每個Java類文件都有一個常量池,該池存儲該類中字節(jié)碼指令的操作。廣義上講,常量池中的條目要么描述運行時artifacts(例如類和方法),要么描述簡單值(例如字符串和整數(shù))。

所有這些條目都稱為可加載常量,因為它們可以用作ldc指令的參數(shù)(“加載常量”)。它們也可能出現(xiàn)在invokedynamic指令的引導方法的靜態(tài)參數(shù)列表中。執(zhí)行l(wèi)dc或invokedynamic指令會導致將可加載常量解析為標準Java類型(如Class,String或int)的“實時”值。

處理類文件的程序需要對字節(jié)碼指令進行建模,然后對可加載常量進行建模。但是,使用標準Java類型對可加載常量進行建模是不夠的。

描述一個字符串(一個CONSTANT_String_info條目)的可加載常量可能是可以接受的,因為生成一個“l(fā)ive” String對象是很簡單的,但是對于描述一個類(一個CONSTANT_Class_info條目)的一個可加載常量來說,這是有問題的,因為生成一個“l(fā)ive”類對象依賴于類加載的正確性和一致性。

在實際應用中,類加載具有許多環(huán)境依賴性和失敗的情況,例如:所需的類不存在或請求者可能無法訪問;類加載的結(jié)果隨上下文而變化;加載類具有副作用;有時根本不可能加載類。

因此,處理可加載常量的程序如果能夠操縱類和方法,并且以純名義上的符號形式操縱諸如方法句柄和動態(tài)計算的常量之類的artifacts,則它們將變得更加簡單。

JDK12在新包java.lang.invoke.constant中定義了一系列基于值的符號引用(JVMS 5.1)類型,它們能夠描述每種可加載常量。符號引用以純字面的形式描述了可加載常量,與類加載或可訪問性上下文分開。某些類可以充當自己的符號引用(例如String);對于可鏈接常量,JDK12定義了一系列符號引用類型(ClassDesc,MethodTypeDesc,MethodHandleDesc和DynamicConstantDesc),來包含描述這些常量的信息。

2、JEP341: 默認CDS歸檔

通過在64位平臺上的默認類列表的幫助下生成CDS歸檔來改進JDK構(gòu)建過程,從而有效地消除了運行java -Xshare:dump。 此功能的目標包括:

  • 改進開箱即用的啟動時間
  • 擺脫使用-Xshare:dump。
3、JEP230: Microbenchmark測試套件

此功能為JDK源代碼添加了一套Microbenchmark測試(大約100個),簡化了現(xiàn)有Microbenchmark測試的運行和新基準測試的創(chuàng)建過程。 它基于Java Microbenchmark Harness(JMH)并支持JMH更新。

此功能使開發(fā)人員可以輕松運行當前的Microbenchmark測試并為JDK源代碼添加新的Microbenchmark測試。 可以基于Java Microbenchmark Harness(JMH)輕松測試JDK性能。 它將支持JMH更新,并在套件中包含一組(約100個)基準測試。

3、新的平臺支持 1、JEP340: 移除多余ARM64實現(xiàn)

Java 12將只有一個ARM 64位實現(xiàn)(aarch64)。 目標是刪除所有與arm64實現(xiàn)相關(guān)的代碼,同時保留32位ARM端口和64位aarch64實現(xiàn)。

這將把重點轉(zhuǎn)移到單個64位ARM實現(xiàn),并消除維護兩個實現(xiàn)所需的重復工作。 當前的JDK 11實現(xiàn)中有兩個64位ARM實現(xiàn)。

4、JVM 優(yōu)化 1、JPE 344: G1的可中斷 mixed GC

此功能通過將Mixed GC集拆分為強制部分和可選部分,使G1垃圾收集器更有效地中止垃圾收集過程。通過允許垃圾收集過程優(yōu)先處理強制集,g1可以更多滿足滿足暫停時間目標。

G1是一個垃圾收集器,設計用于具有大量內(nèi)存的多處理器機器。由于它提高了性能效率,g1垃圾收集器最終將取代cms垃圾收集器。

G1垃圾收集器的主要目標之一是滿足用戶設置的暫停時間。G1采用一個分析引擎來選擇在收集期間要處理的工作量。此選擇過程的結(jié)果是一組稱為GC集的區(qū)域。一旦GC集建立并且GC已經(jīng)開始,那么G1就無法停止。

如果G1發(fā)現(xiàn)GC集選擇選擇了錯誤的區(qū)域,它會將GC區(qū)域的拆分為兩部分(強制部分和可選部分)來切換到處理Mix GC的增量模式。如果未達到暫停時間目標,則停止對可選部分的垃圾收集。

2、JEP 346: G1歸還不使用的內(nèi)存

此功能的主要目標是改進G1垃圾收集器,以便在不活動時將Java堆內(nèi)存歸還給操作系統(tǒng)。 為實現(xiàn)此目標,G1將在低應用程序活動期間定期生成或持續(xù)循環(huán)檢查完整的Java堆使用情況。

這將立即歸還未使用的部分Java堆內(nèi)存給操作系統(tǒng)。 用戶可以選擇執(zhí)行FULL GC以大化返回的內(nèi)存量。

5、新功能的預覽和實驗 1、JEP 189: Shenandoah:低暫停時間垃圾收集器(實驗)

JDK 12 引入的回收算法(實驗階段),該算法通過與正在運行的 Java 線程同時進行疏散工作來減少 GC 暫停時間。Shenandoah 的暫停時間與堆大小無關(guān),無論堆棧是 200 MB 還是 200 GB,都具有相同的一致暫停時間。

Shenandoah適用于高吞吐和大內(nèi)存場景,不適合高實時性場景。Shenandoah算法設計目標主要是響應性和一致可控的短暫停頓,對于垃圾回收生命周期中安全點停頓(TTSP)和內(nèi)存增長監(jiān)控的時間開銷并無幫助。

Shenandoah算法為每個Java對象添加了一個間接指針,使得GC線程能夠在Java線程運行時壓縮堆。標記和壓縮是同時執(zhí)行的,因此我們只需要暫停Java線程在一致可控的時間內(nèi)掃描線程堆棧以查找和更新對象圖的根。

怎么形容Shenandoah和ZGC的關(guān)系呢?異同點大概如下:

  • 相同點:性能幾乎可認為是相同的
  • 不同點:ZGC是Oracle JDK的。而Shenandoah只存在于OpenJDK中,因此使用時需注意你的JDK版本
  • 打開方式:使用-XX:+UseShenandoahGC命令行參數(shù)打開。
2、JEP 325: Switch 表達式 (預覽版本)

在 Java 12 中引入了 Switch 表達式作為預覽特性

在 Java 12 之前,傳統(tǒng) Switch 語句寫法為:

private static String getText(int number) {String result = "";
    switch (number) {case 1, 2:
            result = "one or two";
            break;
        case 3:
            result = "three";
            break;
        case 4, 5, 6:
            result = "four or five or six";
            break;
        default:
            result = "unknown";
            break;
    };
    return result;
}

在 Java 12 之后,關(guān)于 Switch 表達式的寫法改進為如下:

private static String getText(int number) {String result = switch (number) {case 1, 2 ->"one or two";
        case 3 ->"three";
        case 4, 5, 6 ->"four or five or six";
        default ->"unknown";
    };
    return result;
}
更多內(nèi)容:

更多內(nèi)容大家可以關(guān)注一下個人博客網(wǎng),https://blog.xueqimiao.com/,內(nèi)容更豐富喔。

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

文章題目:五、Java12新特性概述-創(chuàng)新互聯(lián)
當前URL:http://muchs.cn/article4/dsgpoe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供虛擬主機、動態(tài)網(wǎng)站、營銷型網(wǎng)站建設標簽優(yōu)化、App開發(fā)定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設