国产精品无码一区二区三区太,亚洲一线产区二线产区区别,欧美A区,人妻jealousvue人妻

×

Java培訓基礎(chǔ)學習之Java虛擬機知識解析

  • 作者:新網(wǎng)
  • 來源:新網(wǎng)
  • 瀏覽:100
  • 2018-04-24 12:07:33

所謂JVM,即Java Virtual Machine(Java虛擬機)的縮寫。眾所周知,Java語言的一個非常重要的特點就是與平臺的無關(guān)性,但是它們又是怎么扯上關(guān)系的呢?小編來為大家解答。

  20150619_8403fcf6dfb222b5192aXUt8c7bgg9Ko.jpg

<div>  所謂JVM,即Java Virtual Machine(Java虛擬機)的縮寫。眾所周知,Java語言的一個非常重要的特點就是與平臺的無關(guān)性,但是它們又是怎么扯上關(guān)系的呢?小編來為大家解答。
  作為Java的基礎(chǔ)知識,很多企業(yè)在面試時會提問求職者Java虛擬機的一些知識:
  1、Java虛擬機為新生對象分配內(nèi)存有哪兩種方式?
  答:指針碰撞和空閑列表。Java虛擬機采用哪種方式為新生對象分配內(nèi)存,取決于所使用的垃圾收集器,當垃圾收集器具有整理過程時,虛擬機將采用指針碰撞的方式;當垃圾收集器的回收過程沒有整理過程時,則采用空閑列表方式。
  2、Java虛擬機運行時數(shù)據(jù)區(qū)包括哪些?
  答:根據(jù)Java虛擬機規(guī)范的規(guī)定,虛擬機內(nèi)存在Java程序運行時被分為程序計數(shù)器、Java虛擬機棧、本地方法棧、堆和方法區(qū)五個區(qū)域。
  3、Java虛擬機類加載的周期包括哪幾個階段?
  答:類從被加載到虛擬機內(nèi)存中開始,到卸載出內(nèi)存為止,它的整個生命周期包括:加載、驗證、準備、解析、初始化、使用和卸載七個階段。
  4、Java虛擬機分配過程中如何解決線程安全?
  答:兩種方式:1)對分配內(nèi)存空間的動作進行同步處理——實際上虛擬機采用CAS配上失敗重試的方式保證更新操作的原子性;2)把內(nèi)存分配的動作按照線程劃分在不同的空間之中進行,即每個線程在Java堆中預先分配一小塊內(nèi)存,稱為本地線程分配緩沖(TLAB)。哪個線程要分配內(nèi)存,就在哪個線程的TLAB上分配,只有TLAB用完并分配新的TLAB時,才需要同步鎖定。虛擬機是否使用TLAB,可以通過-XX:+/-UseTLAB參數(shù)來設(shè)定。
  5、Java虛擬機對象在內(nèi)存中如何布局?
  答:在HotSpot虛擬機中,對象在內(nèi)存中存儲的布局可以分為3塊區(qū)域:對象頭(Header)、實例數(shù)據(jù)(Instance Data) 和對齊填充(Padding)。
  6、Java虛擬機中主流的訪問方式有哪幾種?
  答:有使用句柄和直接指針兩種。使用句柄訪問的最大好處就是reference中存儲的是穩(wěn)定的句柄地址,使用直接指針訪問的最大好處就是速度更快,節(jié)省了一次指針定位的時間開銷。
 

免責聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認相關(guān)法律責任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請發(fā)送郵件至:operations@xinnet.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

免費咨詢獲取折扣

Loading