成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

54個JAVA官方文檔重要術(shù)語

longmon / 1773人閱讀

摘要:近期在閱讀最新幾版的官方文檔過程中發(fā)現(xiàn)不少術(shù)語不清之處特發(fā)此文總結(jié)以下的術(shù)語大量在官方文檔中直接出現(xiàn)且直接如基本詞語一樣使用不理解它們會嚴(yán)重影響閱讀自適應(yīng)自旋鎖自適應(yīng)自旋鎖是一個允許線程在特定點(diǎn)自旋等待特定事件發(fā)生而不是直接進(jìn)行并等待該事件

近期在閱讀JAVA最新幾版的官方文檔過程中發(fā)現(xiàn)不少術(shù)語不清之處,特發(fā)此文總結(jié).
以下的術(shù)語大量在官方文檔中直接出現(xiàn),且直接如基本詞語一樣使用,不理解它們會嚴(yán)重影響閱讀.

1.自適應(yīng)自旋鎖(adaptive spinning)

自適應(yīng)自旋鎖是一個允許線程在特定點(diǎn)自旋等待特定事件發(fā)生而不是直接進(jìn)行block并等待該事件發(fā)生或條件變化的通知的優(yōu)化機(jī)制."自適應(yīng)"是指決定在block之前自旋的時間.

2.偏向鎖(biased locking)

偏向鎖也是一種優(yōu)化機(jī)制,它使得一個線程在釋放鎖之后,vm仍舊在邏輯上讓該線程"持有"一個對象的鎖,它的優(yōu)化前提點(diǎn)是該線程會在稍后重新獲取該鎖(這是一個常見的事件),如果此時有其他線程爭搶該鎖,則必須撤消偏向鎖持有者的偏向鎖.

3.塊起始表(block start table)

它表示一段堆內(nèi)存區(qū)域,對象在該內(nèi)存區(qū)域的起始地址從較低的地址開始,它的一個樣例是remembered set中的card table變體.

4.啟動類加載器(bootstrap classloader)

它是負(fù)責(zé)加載啟動路徑(尤其核心java平臺類)下的類或資源的加載器,一般由虛擬機(jī)實(shí)現(xiàn),在JAVA api層面,用classloader獲取該實(shí)例會返回null.
順便提一下JAVA9之后的類加載機(jī)制變化,在JAVA9之前,類的加載是簡單的"雙親委托"模式,應(yīng)用類加載器委托給擴(kuò)展類加載器,再向上委托到啟動類加載器,父加載器不能加載時再自行加載,但在JAVA9之后開啟了模塊化系統(tǒng),出現(xiàn)了"模塊路徑"的概念,并移除了"簽名重寫"和"擴(kuò)展"機(jī)制,相應(yīng)的移除了擴(kuò)展類加載器,取而代之的是平臺類加載器,相應(yīng)的變化詳述如下:
應(yīng)用類加載器不再URLClassLoader的實(shí)現(xiàn)類,而成為它的一個內(nèi)部類,它是非JAVA SE或JDK模塊之外的具名模塊的默認(rèn)加載器.
擴(kuò)展類加載器也不再是URLClassLoader的實(shí)例,而成為它的一個內(nèi)部類,在JEP220之后,它不再通過擴(kuò)展機(jī)制來加載類.它可以用來定義JAVA SE 和JDK中的可選模塊,它現(xiàn)在被稱為平臺類加載器,使用ClassLoader::getPlatformClassLoader可以獲取該加載器的實(shí)例.
在JAVA9之后,啟動類加載器由虛擬機(jī)和核心庫共同實(shí)現(xiàn),出于兼容性,使用ClassLoader api獲取該類加載器仍舊會返回null,它定義了核心java se和jdk的模塊.
加載按如下順序進(jìn)行:
應(yīng)用類加載器首先搜索它的內(nèi)建加載器定義的所有"具名模塊",如果對這些加載器找到了合適的模塊定義,將會使用該加載器加載class.如果class并沒有在這些加載器定義的具名模塊中找到,那么應(yīng)用類加載器將會委托給雙親.如果雙親也沒有找到,則應(yīng)用類加載器搜索類路徑,在類路徑下找到的類將成為這些加載器的無名模塊.
原擴(kuò)展類加載器由平臺類加載器替代,平臺類加載器會搜索所有內(nèi)建加載器的具名模塊定義,如果找到合適的模塊,那么加載器會加載該類.(平臺加載器現(xiàn)在可以委托給應(yīng)用類加載器,它在一個模塊位于更新模塊路徑且依賴了應(yīng)用模塊路徑下的模塊時會很有用)如果一個類沒有在平臺類加載器的的有加載器下定義的具名模塊中找到,委托給父加載器加載.
啟動類加載器會檢索自己定義的具名模塊,如果一個類未能在啟動加載器定義的具名模塊中找到,則查找添加到啟動類路徑下的文件和目錄(可通過-Xbootclasspath/選項(xiàng)指定).在該路徑下找到的類將成為這些加載器的無名模塊.
三種加載器分別負(fù)責(zé)jdk中的不同模塊,如下:
平臺類加載器負(fù)責(zé)的jdk模塊:
java.activation* jdk.accessibility
java.compiler* jdk.charsets
java.corba* jdk.crypto.cryptoki
java.scripting jdk.crypto.ec
java.se jdk.dynalink
java.se.ee jdk.incubator.httpclient
java.security.jgss jdk.internal.vm.compiler*
java.smartcardio jdk.jsobject
java.sql jdk.localedata
java.sql.rowset jdk.naming.dns
java.transaction* jdk.scripting.nashorn
java.xml.bind* jdk.security.auth
java.xml.crypto jdk.security.jgss
java.xml.ws* jdk.xml.dom
java.xml.ws.annotation* jdk.zipfs
(帶"*"表示為"可更新模塊".)

應(yīng)用類加載器負(fù)責(zé)加載的jdk模塊:

jdk.aot jdk.jdeps
jdk.attach jdk.jdi
jdk.compiler jdk.jdwp.agent
jdk.editpad jdk.jlink
jdk.hotspot.agent jdk.jshell
jdk.internal.ed jdk.jstatd
jdk.internal.jvmstat jdk.pack
jdk.internal.le jdk.policytool
jdk.internal.opt jdk.rmic
jdk.jartool jdk.scripting.nashorn.shell
jdk.javadoc jdk.xml.bind*
jdk.jcmd jdk.xml.ws*
jdk.jconsole
其他JAVA SE和jdk模塊由啟動類加載器負(fù)責(zé):

java.base java.security.sasl
java.datatransfer java.xml
java.desktop jdk.httpserver
java.instrument jdk.internal.vm.ci
java.logging jdk.management
java.management jdk.management.agent
java.management.rmi jdk.naming.rmi
java.naming jdk.net
java.prefs jdk.sctp
java.rmi jdk.unsupported

5.字節(jié)碼校驗(yàn)(bytecode verification)

類的鏈接過程中的一個步驟,在這個步驟中分析方法字節(jié)碼保證類型安全.

6.C1編譯器(C1 compiler)
C1編譯器是一個快速輕量級的優(yōu)化字節(jié)碼編譯器.它會執(zhí)行一些值的編號,內(nèi)聯(lián),類分析.它使用簡單的面向cfg的SSA高級信息檢索、面向機(jī)器的低級信息檢索,一個線性掃描寄存器分配以及一個模板樣式的代碼生成器。

7.C2編譯器(C2 compiler)

它是高度的優(yōu)化字節(jié)碼編譯器,也被稱之為"opto",它使用"節(jié)點(diǎn)海洋" SSA "理想化" 信息檢索,它會下沉到同一種機(jī)器規(guī)格的信息檢索.它有一個圖著色的寄存器,可給所有機(jī)器狀態(tài)進(jìn)行著色(包含本地的,全局的,參數(shù)寄存器和棧).C2編譯器能做出的優(yōu)化包含全局變量值編號,狀態(tài)常量類型傳遞,常量折疊,全局代碼移動,代數(shù)身份,方法內(nèi)聯(lián)(聚合的優(yōu)化的和/或多態(tài)),內(nèi)部替換,循環(huán)轉(zhuǎn)換(去switch去輪循等),數(shù)組邊界檢查的消除等.

8.卡表表(card table)

它是一種記錄了一個代中oops改變的記錄的remembered set.

9.類數(shù)據(jù)共享(class data sharing)

類數(shù)據(jù)共享是一個啟動優(yōu)化,它記錄了一些類的內(nèi)存結(jié)構(gòu),使虛擬機(jī)在后續(xù)的運(yùn)行中不用再從class文件中去載入相應(yīng)的類,而是直接映射到內(nèi)存結(jié)構(gòu)中的數(shù)據(jù).

10.類層級分析(class hierachy analysis)

也被稱之為"CHA",編譯器會分析類樹,以找出虛擬調(diào)用點(diǎn)的接收者是否有一個單一的實(shí)現(xiàn)者,如果存在,可以內(nèi)聯(lián)被調(diào)用者,編譯器也可使用一些其他的靜態(tài)調(diào)用機(jī)制.

11.代碼緩存(code cache)

它是一個特殊的持有編譯后代碼的堆.這些對象不會被gc搬移,但它們可能會包含服務(wù)于gc roots 的oops.

12.整理(compaction)

整理是一個gc中常見的技術(shù),它會將存活的對象密集地放置在一個虛擬地址空間,同時使得其他地址空間成為連續(xù)可用的空閑空間.

13.并發(fā)(concurrency)

并發(fā)或者說并發(fā)編程,是邏輯上多個指令流的同時執(zhí)行,如果有可用的多處理器,那么邏輯上的同時執(zhí)行可以物理上同是地執(zhí)行,也就是我們所知的"并行".

14.并發(fā)gc(concurrent garbage collection)

它是在java應(yīng)用線程保持運(yùn)行態(tài)的同時進(jìn)行大部分工作的gc算法.

15.拷貝gc(copying garbage collection)

一種垃圾收集期間移動對象的gc算法.

16.反優(yōu)化(deoptimization)

反優(yōu)化是一個將編譯的(或者更優(yōu)化的)棧楨轉(zhuǎn)化為解釋的(或者弱優(yōu)化的)棧楨的過程.它也被解釋為放棄依賴條件被打破(或者假定被打破)的nmethod的過程.反優(yōu)化nmethod一般會被重新編譯以便適配應(yīng)用行為的變化.舉個例子,編譯器初始假定一個引用的值從不為null,并且使用"捕獲內(nèi)存訪問"的方法進(jìn)行測試.后續(xù)程序運(yùn)行過程中,程序使用了null值,那么方法必須進(jìn)行反優(yōu)化和重編譯,使用顯示的test-and-branch方式發(fā)現(xiàn)此類null值.

17.依賴(dependency)

它是nmethod關(guān)聯(lián)的一個優(yōu)化假定條件,它允許編譯器在nmethod中值入優(yōu)化代碼.舉例:一個類無子類,那么它可以簡化方法轉(zhuǎn)發(fā)和類型測試.載入一個新的類型(或者替換老類型)可能導(dǎo)致這個依賴條件為為false,這就需要舍棄掉并反優(yōu)化這些依賴nmethod.

18.伊甸園(eden)

堆內(nèi)存的一部分,特點(diǎn)是對象可以在其中高效地創(chuàng)建.
注:是分代垃圾收集器所有的特性,在一些新的垃圾收集器中出現(xiàn)弱化(G1中為邏輯上不相連的區(qū)域,zgc和Shenandoah可算為"無代"的垃圾收集器,也就不存在eden的概念).

19.空閑列表(free list)

空閑列表是一種內(nèi)存管理技術(shù),它使無用的部分java對象堆彼此連接,而不是將這些無用堆部分放置在同一個block中.

20.垃圾收集(garbage collection)

即常說的內(nèi)存的自動管理.

21.垃圾收集根(garbage collection root)

它是一個從外部指向java對象堆的指針.舉例:從類的靜態(tài)字段或活化棧楨的本地對堆中對象的引用.

22.GC圖(GC map)

gc映射是一個由JIT(C1或C2)在編譯的棧楨內(nèi)的寄存器或在棧內(nèi)的對象指針的位置上插入的描述.每一個可能執(zhí)行安全點(diǎn)操作的位置都有關(guān)聯(lián)的gc映射圖.gc知道如何去在一個棧中解析一個楨,怎么去從一個楨的nmethod請求一個gc映射,以及如何去取出棧楨內(nèi)的gc映射和管理對象指針.

23.分代垃圾收集(generational garbage collection)

分代垃圾收集是一種對于不同堆區(qū)按存活時間長度不同分離對象的存儲管理技術(shù),它可以令這些不同的區(qū)域使用不同的算法進(jìn)行收集.

24.句柄(handle)

句柄是一個包含對象指針的內(nèi)存原語(word),它對gc完全可知,gc視之為根引用.c/c++代碼通過句柄間接地引用對象指針,為了讓gc更容易地找到和管理根集合.任何時刻,c/c++代碼塊進(jìn)入安全點(diǎn)時,gc可能改變句柄中存放的對象指針.句柄只能是"局部的"(屬于一個線程,受線程堆棧規(guī)則制約,但在線程線上并非必須的)或"全局的"(長期存活且顯式取消分配),虛擬機(jī)實(shí)現(xiàn)了大量的句柄實(shí)現(xiàn),它們?nèi)繉c可識別.

25.熱鎖(hot lock)

高度競態(tài)的鎖.

26.解釋器(interpreter)

解釋器是由單個執(zhí)行字節(jié)碼實(shí)現(xiàn)方法調(diào)用的虛擬機(jī)模塊.解釋器具有一個高度特化棧楨部局和寄存器使用圖的有限集,使用它們作用于所有的方法活化.Hotspot虛擬器會在啟動時生成自己的解釋器.

27.JIT編譯器(JIT compilers)

JIT編譯器是一個應(yīng)用運(yùn)行時為應(yīng)用(或類庫)自生成代碼的在線編譯器.JIT即just in time.JIT編譯器可以在java方法執(zhí)行前非??焖俚貏?chuàng)建機(jī)器碼.Hotspot編譯器允許解釋器執(zhí)行java方法數(shù)千次以采樣運(yùn)行數(shù)據(jù)并熱身,因?yàn)樗梢栽陬惣虞d初始化后觀測到完整的類層級,熱身周期使編譯器有充足的依據(jù)做出優(yōu)化決策.編譯器也可以檢視解釋器收集的分支和類型的剖析信息.

28.jni接口(JNI)

java本地方法接口.它定義了一組api,用于java代碼調(diào)用native c代碼,以及它怎么調(diào)用java虛擬機(jī)代碼.

29.jvm工具接口(JVM TI)

用于開發(fā)和監(jiān)測jvm的工具.

30.類指針(klass pointer)

Java中對象頭有兩個word(在JAVA12推出的體驗(yàn)版Shenandoah垃圾收集器模型中新增了一個"間接指針",故有三個word).第二個word指向一個描述了原生對象的部局和行為的(一個元數(shù)據(jù)對象),對于java對象來主產(chǎn),"klass"包含c++風(fēng)格的"vtable".

31.標(biāo)記語(mark word)

每個對象頭的第一個word,它是一組按位劃分的字段,包含同步狀態(tài)和hash碼,也可能有一個與同步有關(guān)信息關(guān)聯(lián)的指針(低位編碼),在gc過程中,也可能包含gc狀態(tài)位.

32.nmethod

nmethod是一個實(shí)現(xiàn)了一些java字節(jié)碼的可執(zhí)行代碼塊.它可能是一個完整的java方法,或者一個"osr"(當(dāng)前棧替換)方法,它通常包含編譯器內(nèi)聯(lián)的附加方法的對象代碼.

33.對象頭(object header)

對象頭是每個gc管理的堆對象的通用開始結(jié)構(gòu).(每個對象指針指向一個對象的頭部)包含關(guān)于堆對象部局,類型,gc狀態(tài),同步狀態(tài),身份標(biāo)識哈希碼等屬性.對象頭包含兩個word(前述Shenandoah包含三個word),在數(shù)組中它后面緊隨一個長度字段.注意java對象和vm內(nèi)部對象具備同樣的對象頭格式.

34.對象晉升(object promotion)

把對象從一個代拷貝到另一個代的過程.
35.老年代(old generation)

一個存放存活較持久對象的堆區(qū).

36.當(dāng)前棧替換(on-stack replacement)

即前面說過的"OSR",它是一個把解釋棧楨(弱優(yōu)化)轉(zhuǎn)換為一個編譯的棧楨(強(qiáng)優(yōu)化)的過程.這發(fā)生在編譯器發(fā)現(xiàn)一個方法處于循環(huán)中的情景時,這會請求編譯器在循環(huán)中的一個特殊入口點(diǎn)(特殊情況在后向分支)上生成一個特殊的nmethod,并轉(zhuǎn)化控制到該nmethod,它的反過程即前述"反優(yōu)化".

37.對象指針(oop)

即object pointer,一般來說是一個指向gc管理堆的指針(這是一個傳統(tǒng)的協(xié)議,o代表ordinary).它的實(shí)現(xiàn)是一個本地機(jī)器地址而不是一個句柄.對象指針可以由編譯器或解釋器java代碼直接組裝,因?yàn)間c知道這些代碼中的對象指針的存活情況和位置.(參見gc映射)對象指針可以直接用c/c++代碼來組裝,但在跨越安全點(diǎn)時相應(yīng)的代碼一定要把它保持在每個句柄之內(nèi).

38.并行類加載(parallel classloading)

同一類加載器同一時刻加載多個class/type.

39.并行g(shù)c(parallel garbage collection)

并行g(shù)c是一個可以在多處理器場景下使用多線程保證更高的效率的gc算法.

40.永久代(permanent generation)

永久代是由gc管理的虛擬機(jī)自身分配對象的一個地址空間,它其實(shí)是被"誤解稱"為永久代的,幾乎其中的所有對象都不會被回收,因?yàn)樗鼈儠婊詈荛L一段時間,所以極少的回收(但不是不回收).

41.remembered set

在代之間記錄指針的一種數(shù)據(jù)結(jié)構(gòu).

42.安全點(diǎn)(safepoint)

在安全點(diǎn),所有的GC roots已知且所有堆對象內(nèi)容是一致的.從全局安全點(diǎn)的角度看,所有線程一定要在gc可以運(yùn)行前在安全點(diǎn)阻塞.(特殊情況,運(yùn)行JNI代碼的線程可以繼續(xù)運(yùn)行,因?yàn)樗鼈冎挥镁浔?在安全點(diǎn)期間他們不能載入句柄的內(nèi)容,只能阻塞)從局部角度看,安全點(diǎn)即是一個線程可能因?yàn)镚C而阻塞執(zhí)行過程的代碼中的一個點(diǎn).大多數(shù)的調(diào)用點(diǎn)可以作為安全點(diǎn),有一些強(qiáng)不變量會在任何一個安全點(diǎn)保持true,但在非空全點(diǎn)期間會被無視.編譯的java代碼和c/c++代碼都針對安全點(diǎn)間進(jìn)行了優(yōu)化,但對于跨安全點(diǎn)做的優(yōu)化很少.JIT編譯器會在每個安全點(diǎn)安插一個GC映射.在虛擬機(jī)中的c/c++代碼會使用程式化的基于宏的規(guī)約(如TRAPS)來標(biāo)記潛在安全點(diǎn).
目前作者從散碎的若干文檔中可以確定安全點(diǎn)的影響點(diǎn)有:
最常見的基于安全點(diǎn)的操作是gc,或者更精確地說為gc的"stop the world"階段,但是在虛擬機(jī)中仍舊有很多依賴于安全點(diǎn)的操作.
偏向鎖的移除.
線程掛起或停止(Thread.stop())
JVMTI請求的內(nèi)檢操作.
代碼反優(yōu)化.
刷新代碼緩存.
類重定義(如執(zhí)交換或在線監(jiān)測instrumentation)
偏向鎖移除
各種debug操作(棧dump,死鎖檢測等)
從JAVA10開始,官方對于安全點(diǎn)做出了至少一個優(yōu)化:即線程本地握手/或線程局部握手.
該功能的核心思想在于在每一個java線程的安全點(diǎn)執(zhí)行相應(yīng)的回調(diào)操作(java線程或vm線程).
虛擬機(jī)線程將會協(xié)調(diào)握手操作,它會在握手期間阻止全局安全點(diǎn)的發(fā)生,通過這樣至少實(shí)現(xiàn)了以下幾點(diǎn)優(yōu)化目標(biāo):
提升偏向鎖的撤消操作,不再需要停掉所有的線程,只需要停止單個線程并執(zhí)行偏向鎖操作撤消即可.
減少一些如獲取棧跡等操作對虛擬機(jī)全局延遲影響.在執(zhí)行安全的棧跡采樣時可減少對信號量的依賴.
使用異步的Dekker同步技術(shù)實(shí)現(xiàn)一些內(nèi)在屏障操作,這可以通過使用java線程執(zhí)行握手操作的方式實(shí)現(xiàn).如G1和CMS需要使用的狀態(tài)卡標(biāo)記代碼將不再需要內(nèi)存屏障,結(jié)果就是G1的后處理寫屏障可以被優(yōu)化,有關(guān)避免內(nèi)存屏障的代碼分支也可移除.

43.節(jié)點(diǎn)海洋(sea-of-nodes)

它是C2編譯器中的一個高等的中間表現(xiàn)形式,以SSA格式表現(xiàn),數(shù)據(jù)流和控制流表現(xiàn)均以節(jié)點(diǎn)間的直線表示.與傳統(tǒng)編譯器的格式不同,傳統(tǒng)編譯器的控制流圖不以代碼塊為邊限.IR(猜測是intermediate representation的意思)允許節(jié)點(diǎn)在海洋中流動(受到節(jié)點(diǎn)之間的邊線約束),直到它們在稍后的編譯過程中被預(yù)定.

44.可維護(hù)的代理(Serviceability Agent (SA))

可維護(hù)的代理一一組sun公司的內(nèi)部用來debug Hotspot虛擬機(jī)問題的代碼.它也被用在一些JDK的工具包中,如jstack,jmap,jinfo,jdb等.

45.棧圖(stackmap)

它是棧映射表(StackMapTable)屬性的引用或者表中的一個特殊棧映射楨(StackMapFrame)的引用.

46.棧映射表(StackMapTable)

是在一個包含驗(yàn)證階段由驗(yàn)證器使用的類型信息的類文件的一個代碼屬性.它包含一個StackMapFrames數(shù)組,它在JDK6中由javac命令自動生成.

47.幸存者空間(survivor space)

它是java對象堆中存儲對象的一個區(qū)域,通常有一對幸存者區(qū),回收一個區(qū)時,將一個幸存者區(qū)的被引用的(存活)對象拷貝到另一個存活著區(qū).

48.同步(synchronization)

它可以用來協(xié)調(diào)并發(fā)職能,保證這些工作的安全性和活躍性.舉例:通過鎖保護(hù)所有訪問主某共享數(shù)據(jù)的訪問路徑.

49.線程本地分配緩存(TLAB)

線程本地分配緩存(Thread-local allocation buffer),用來快速無同步地分配堆空間.編譯后的代碼對一些嘗試用在當(dāng)前線程本地分配緩存的方式達(dá)到"高位標(biāo)記"的幾個指令有一個"快速執(zhí)行路徑",當(dāng)嘗試分配對象時,如果這個標(biāo)記位于線程本地分配緩存指定的限定地址之前,則代表分配空間成功.

50.不常見的陷阱(uncommon trap)

當(dāng)C2生成的代碼回滾到解釋器以備后續(xù)執(zhí)行時.C2一般按照常見案例進(jìn)行編譯,這允許它專注于最頻繁常見執(zhí)行路徑的優(yōu)化.舉個例子,當(dāng)一個類在編譯時處于未初始化態(tài)而需要運(yùn)行時初始值時,C2編譯器在生成的代碼中插入一個"不常見的陷阱".

51.驗(yàn)證器(verifier)

虛擬機(jī)中執(zhí)行字節(jié)碼校驗(yàn)的軟件代碼.

52.虛擬機(jī)操作(VM Operations)

虛擬機(jī)中可以被java線程請求的,但是一定要由虛擬機(jī)線程以串行方式執(zhí)行的操作,這些操作通常是同步的,因此請求者將會block直到虛擬機(jī)線程完成舊有操作.很多這些操作通常需要虛擬機(jī)到達(dá)安全點(diǎn).gc是一個簡單的例子.

53.寫屏障(write barrier)

寫屏障是在每個對象指針存儲時執(zhí)行的代碼,舉個例子,如維護(hù)一個remembered set.
54.年輕代(young generation)

java堆中的用來存放最近分配的對象的區(qū)域.

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/74684.html

相關(guān)文章

  • 關(guān)于偏向鎖,安全點(diǎn),JIT的一些暗坑.

    摘要:前言本文是一篇簡短的雜糅本文源自于作者最近的一個疑問為什么在舊版的中偏向鎖的移除一定要在全局安全點(diǎn)進(jìn)行同時在上個星期作者參與的一個項(xiàng)目發(fā)生了一件怪事一個服務(wù)莫名其妙地不接受任何請求了一切請求都是而查看日志發(fā)現(xiàn)出故障的服務(wù)本身去請求另一個服務(wù) 前言 本文是一篇簡短的雜糅. 本文源自于作者最近的一個疑問:為什么在舊版的jdk中偏向鎖的移除一定要在全局安全點(diǎn)進(jìn)行?同時在上個星期,作者參與的一...

    JeOam 評論0 收藏0
  • JAVA運(yùn)行時簡述(HotSpot)

    摘要:拆解虛擬機(jī)的基本步聚如下首先,要等待到自身成為唯一一個正在運(yùn)行的非守護(hù)線程時,在整個等待過程中,虛擬機(jī)仍舊是可工作的。將相應(yīng)的事件發(fā)送給,禁用,并終止信號線程。 本文簡單介紹HotSpot虛擬機(jī)運(yùn)行時子系統(tǒng),內(nèi)容來自不同的版本,因此可能會與最新版本之間(當(dāng)前為JDK12)存在一些誤差。 1.命令行參數(shù)處理HotSpot虛擬機(jī)中有大量的可影響性能的命令行屬性,可根據(jù)他們的消費(fèi)者進(jìn)行簡...

    hosition 評論0 收藏0
  • 面試中關(guān)于Redis的問題看這篇就夠了

    摘要:所以查閱官方文檔以及他人造好的輪子,總結(jié)了一些面試和學(xué)習(xí)中你必須掌握的問題。在微博應(yīng)用中,可以將一個用戶所有的關(guān)注人存在一個集合中,將其所有粉絲存在一個集合。 昨天寫了一篇自己搭建redis集群并在自己項(xiàng)目中使用的文章,今天早上看別人寫的面經(jīng)發(fā)現(xiàn)redis在面試中還是比較常問的(筆主主Java方向)。所以查閱官方文檔以及他人造好的輪子,總結(jié)了一些redis面試和學(xué)習(xí)中你必須掌握的問題。...

    yanbingyun1990 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<