日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

java 加载中_Java 6类加载中更快的是什么?

發(fā)布時(shí)間:2025/3/21 87 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 加载中_Java 6类加载中更快的是什么? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

小編典典

Java 6編譯器將預(yù)驗(yàn)證信息添加到類文件中

如果Java虛擬機(jī)實(shí)現(xiàn)曾經(jīng)嘗試對50.0版類文件執(zhí)行通過類型推斷的驗(yàn)證,則在通過類型檢查的驗(yàn)證失敗的所有情況下都必須這樣做。

這意味著Java虛擬機(jī)實(shí)現(xiàn)無法選擇在一種情況下而不是在另一種情況下求助于類型推斷。它必須拒絕未通過類型檢查進(jìn)行驗(yàn)證的類文件,或者必須在類型檢查失敗時(shí)始終將故障轉(zhuǎn)移到類型推斷驗(yàn)證程序。

對于每個(gè)具有Code屬性的方法,類型檢查器都需要一個(gè)堆棧映射框架列表。類型檢查器為每種此類方法讀取堆棧映射框架,并使用這些映射生成Code屬性中指令的類型安全性證明。

從Java

6,類文件50.0及更高版本開始,JVM可以在類文件驗(yàn)證期間使用類型檢查或類型推斷。在試圖了解性能優(yōu)勢之前,什么是類型檢查和類型推斷?本文面向?qū)ο蟮木幊陶Z言的類型檢查和類型推斷指出:

類型系統(tǒng)是編程語言的重要組成部分。完全依賴于運(yùn)行時(shí)類型檢查的語言提供了高度的靈活性,但通常必須為此犧牲性能。

并從維基百科上進(jìn)行類型推斷:

類型推斷是在編譯時(shí)自動部分或完全推斷表達(dá)式類型的能力。[…]

為了獲得推斷表達(dá)式類型所需的信息,編譯器要么以匯總形式收集此信息,然后對為其子表達(dá)式指定的類型注釋進(jìn)行縮減,要么通過對各種原子值的類型的隱式理解[…

]。

當(dāng)前有兩種分析字節(jié)碼以確定每種指令將出現(xiàn)的操作數(shù)的類型和數(shù)量的方法。傳統(tǒng)方法稱為“類型推斷”,它通過對每個(gè)字節(jié)碼執(zhí)行抽象解釋并在分支目標(biāo)或異常句柄處合并類型狀態(tài)來進(jìn)行操作。分析遍歷字節(jié)碼,直到找到類型的穩(wěn)定狀態(tài)為止。如果找不到穩(wěn)定狀態(tài),或者生成的類型違反某些字節(jié)碼約束,則將引發(fā)VerifyError。[…]

JDK6中的新增功能是第二種驗(yàn)證方法,稱為“類型驗(yàn)證”。在這種方法中,Java編譯器通過代碼屬性StackMapTable為每個(gè)分支或異常目標(biāo)提供穩(wěn)態(tài)類型信息。StackMapTable由許多堆棧映射框架組成,每個(gè)框架映射框架指示表達(dá)式堆棧上以及方法中某些偏移處的局部變量中的項(xiàng)目類型。然后,JVM只需要對字節(jié)碼執(zhí)行一次遍歷,即可驗(yàn)證類型的正確性,從而驗(yàn)證字節(jié)碼。[…]

類型檢查意味著JVM可以一次遍歷類文件來驗(yàn)證類型系統(tǒng)。類型推斷需要多次通過。這是否可以節(jié)省大量的性能?這可能與應(yīng)用程序中類的總數(shù)以及小于50.0(Java

6)且大于50.0的類文件的數(shù)量有關(guān)。如果您的應(yīng)用程序不是性能至關(guān)重要的應(yīng)用程序,那么我就不必?fù)?dān)心。如果是這樣,則可以在將應(yīng)用程序編譯為Java

5和Java 6類文件時(shí)運(yùn)行一些基準(zhǔn)測試,以比較性能差異。

2020-12-03

總結(jié)

以上是生活随笔為你收集整理的java 加载中_Java 6类加载中更快的是什么?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。