最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java?Valhalla?Project項目介紹

 更新時間:2022年09月06日 14:40:08   作者:?sofia??  
這篇文章主要介紹了Java?Valhalla?Project項目介紹,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

前言:

在本文中,我們將介紹Valhalla項目——它的歷史原因、當(dāng)前的開發(fā)狀態(tài),以及它發(fā)布后為日常Java開發(fā)人員帶來了什么。

Valhalla項目的動機(jī)和原因

Oracle的Java語言架構(gòu)師Brian Goetz在一次演講中說,Valhalla項目的主要動機(jī)之一是希望使Java語言和運(yùn)行時適應(yīng)現(xiàn)代硬件。當(dāng)Java語言誕生時(大約25年前撰寫本文時),獲取內(nèi)存和算術(shù)運(yùn)算的成本大致相同。

如今,這種情況已經(jīng)發(fā)生了變化,內(nèi)存提取操作的成本是算術(shù)操作的200到1000倍。就語言設(shè)計而言,這意味著導(dǎo)致指針提取的間接操作會對整體性能產(chǎn)生不利影響。

由于應(yīng)用程序中的大多數(shù)Java數(shù)據(jù)結(jié)構(gòu)都是對象,因此我們可以將Java視為指針密集型語言(盡管我們通常不會直接看到或操作它們)。這種基于指針的對象實現(xiàn)用于啟用對象標(biāo)識,對象標(biāo)識本身用于語言特性,如多態(tài)性、可變性和鎖定。默認(rèn)情況下,這些特性適用于每個對象,無論它們是否真的需要。

遵循導(dǎo)致指針的標(biāo)識鏈和導(dǎo)致間接的指針鏈,間接存在性能缺陷,邏輯上的結(jié)論是刪除那些不需要它們的數(shù)據(jù)結(jié)構(gòu)。這就是值類型value types發(fā)揮作用的地方。

Value Types 值類型

值類型的概念是表示純數(shù)據(jù)聚合。這會刪除常規(guī)對象的功能。因此,我們有純數(shù)據(jù),沒有身份。當(dāng)然,這意味著我們也失去了使用對象標(biāo)識可以實現(xiàn)的功能。因此,平等比較只能基于狀態(tài)進(jìn)行。因此,我們不能使用表示多態(tài)性,也不能使用不可變或不可為空的對象。

由于我們不再有對象標(biāo)識,我們可以放棄指針,改變值類型的一般內(nèi)存布局,而不是對象。讓我們來比較一下類點(diǎn)和相應(yīng)的值類型點(diǎn)之間的內(nèi)存布局。

常規(guī)Point類的代碼和相應(yīng)的內(nèi)存布局為:

final class Point {
  final int x;
  final int y;
}

另一方面,值類型Point的代碼和相應(yīng)的內(nèi)存布局將是:

value class Point {
  int x;
  int y
}

這允許JVM將值類型展平為數(shù)組和對象,以及其他值類型。

在下圖中,我們展示了在數(shù)組中使用Point類時間接的負(fù)面影響:

另一方面,這里我們看到值類型Point[]的相應(yīng)內(nèi)存結(jié)構(gòu):

它還使JVM能夠在棧上傳遞值類型,而不必在堆上分配它們。最后,這意味著我們得到的數(shù)據(jù)聚合具有類似于Java原語的運(yùn)行時行為,如intfloat。

但與原語不同,值類型可以有方法和字段。我們還可以實現(xiàn)接口并將其用作泛型類型。

因此,我們可以從兩個不同的角度來看值類型:

  • 更快的對象
  • 用戶定義原語

作為額外的錦上添花,我們可以使用值類型作為泛型類型,而無需裝箱。這直接將我們引向了另一個大型項目Valhalla的特性:專用泛型。

Specialized Generics 專用泛型

當(dāng)我們想對語言原語進(jìn)行泛化時,我們目前使用裝箱類型,例如整數(shù)表示Integer或浮點(diǎn)表示Float。這種裝箱創(chuàng)建了一個額外的間接層,從而首先破壞了使用原語提高性能的目的。

因此,我們在現(xiàn)有的框架和庫中看到了許多針對基元類型的專門化,如IntStream<T>ToIntFunction<T>。這樣做是為了保持使用原語的性能提高。

因此,專門化泛型是為了消除這些“黑客”的需求。相反,Java語言努力為基本上所有東西啟用泛型類型:對象引用、原語、值類型,甚至可能是void。

結(jié)論

我們初步了解了Valhalla項目將給Java語言帶來的變化。其中兩個主要目標(biāo)是提高性能和減少泄漏的抽象。

性能增強(qiáng)通過展平對象圖和移除間接來解決。這將導(dǎo)致更高效的內(nèi)存布局和更少的分配和垃圾回收。

當(dāng)用作泛型類型時,原語和對象具有更相似的行為,這是更好的抽象。

到此這篇關(guān)于Java Valhalla Project項目介紹的文章就介紹到這了,更多相關(guān)Java Valhalla Project內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 完美解決idea無法搜索下載插件的問題

    完美解決idea無法搜索下載插件的問題

    這篇文章主要介紹了完美解決idea無法搜索下載插件的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Java實現(xiàn)多級表頭和復(fù)雜表頭的導(dǎo)出功能

    Java實現(xiàn)多級表頭和復(fù)雜表頭的導(dǎo)出功能

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)多級表頭和復(fù)雜表頭的導(dǎo)出功能的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • Java通過SMS短信平臺實現(xiàn)發(fā)短信功能 含多語言

    Java通過SMS短信平臺實現(xiàn)發(fā)短信功能 含多語言

    這篇文章主要為大家詳細(xì)介紹了Java通過SMS短信平臺實現(xiàn)發(fā)短信功能的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Java8并行流中自定義線程池操作示例

    Java8并行流中自定義線程池操作示例

    這篇文章主要介紹了Java8并行流中自定義線程池操作,結(jié)合實例形式分析了并行流的相關(guān)概念、定義及自定義線程池的相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • Java?Hutool工具包中HttpUtil的日志統(tǒng)一打印及統(tǒng)一超時時間配置

    Java?Hutool工具包中HttpUtil的日志統(tǒng)一打印及統(tǒng)一超時時間配置

    Hutool是一個Java基礎(chǔ)工具類,對文件、流、加密解密、轉(zhuǎn)碼、正則、線程、XML等JDK方法進(jìn)行封裝,組成各種Util工具類,這篇文章主要給大家介紹了關(guān)于Java?Hutool工具包中HttpUtil的日志統(tǒng)一打印及統(tǒng)一超時時間配置的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • SpringBoot實現(xiàn)阿里云快遞物流查詢的示例代碼

    SpringBoot實現(xiàn)阿里云快遞物流查詢的示例代碼

    本文將基于springboot實現(xiàn)快遞物流查詢,物流信息的獲取通過阿里云第三方實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2021-10-10
  • Java使用hutool實現(xiàn)文件大小的友好輸出

    Java使用hutool實現(xiàn)文件大小的友好輸出

    這篇文章主要為大家詳細(xì)介紹了Java如何使用hutool實現(xiàn)文件大小的友好輸出,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以了解下
    2023-11-11
  • springboot日期格式化及時差問題分析

    springboot日期格式化及時差問題分析

    這篇文章主要介紹了springboot日期格式化,時差問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • 一篇文章帶你玩轉(zhuǎn)JAVA單鏈表

    一篇文章帶你玩轉(zhuǎn)JAVA單鏈表

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)帶頭結(jié)點(diǎn)的單鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Maven Spring jar包啟動報錯問題解決方案

    Maven Spring jar包啟動報錯問題解決方案

    maven 編譯jar包,放在linux服務(wù)器啟動不起來,提示:xxxx-0.0.1-SNAPSHOT.jar中沒有主清單屬性,接下來通過本文給大家分享問題原因及解決方案,感興趣的朋友跟隨小編一起看看吧
    2023-10-10

最新評論

阿瓦提县| 泸溪县| 肥城市| 桑植县| 宁德市| 右玉县| 贺州市| 疏附县| 偏关县| 当阳市| 禄劝| 太湖县| 祁阳县| 大同县| 洪雅县| 崇礼县| 新沂市| 夏津县| 胶州市| 华宁县| 德保县| 蕉岭县| 浙江省| 扬中市| 大同县| 达孜县| 马尔康县| 桑日县| 称多县| 和田市| 海安县| 新营市| 广东省| 库伦旗| 库尔勒市| 宝兴县| 沭阳县| 兰坪| 通江县| 杭锦后旗| 青浦区|