當前位置:編程學習大全網 - 編程語言 - Java JVM怎麽學習啊?從哪方面入手

Java JVM怎麽學習啊?從哪方面入手

Java JVM如何學習?首先要了解他的類型!

java虛擬機學習?

數據類型(基本類型、引用類型)====>數值本身、引用值 2. 堆、棧=====>棧是運行時的單位(如何處理數據),堆是存儲的單位(數據如何存儲)

------棧因為是運行單位,因此裏面存儲的信息都是跟當前線程(或程序相關信息的。包括局部變量、程序運行狀態、方法返回值等等;而堆只負責存儲對象信息。在Java中,Main函數就是棧的起始點,也是程序的起始點。堆中存的是對象,棧中存的是基本數據類型和堆中對象的引用?

Java中的參數傳遞時傳值呢?還是傳引用??

a) 程序運行永遠都是在棧中進行的,因而參數傳遞時,只存在傳遞基本類型和對象引

用的問題。不會直接傳對象本身。?

b) Java在方法調用傳遞參數時,因為沒有指針,所以它都是進行傳值調用?

c) 堆和棧中,棧是程序運行最根本的東西。程序運行可以沒有堆,但是不能沒有棧。

而堆是為棧進行數據存儲服務,說白了堆就是壹塊***享的內存。不過,正是因為堆和棧的分離的思想,才使得Java的垃圾回收成為可能

Java對象的大小?

a) 壹個空Object對象的大小是8byte(沒有任何屬性的對象) b) Object ob = new Object();所占的空間為:4byte+8byte。4byte是上面部分所說的Java

棧中保存引用的所需要的空間。而那8byte則是Java堆中對象的信息.不論什麽樣的Java對象,其大小都必須是大於8byte?

c) Java在對對象內存分配時都是以8的整數倍來分,基本類型包裝類的大小至少是

16byte

引用類型?

a) 對象引用類型分為強引用、軟引用、弱引用和虛引用。?

b) 強引用:就是我們壹般聲明對象是時虛擬機生成的引用,強引用環境下,垃圾回收

時需要嚴格判斷當前對象是否被強引用,如果被強引用,則不會被垃圾回收 c) 軟引用:軟引用壹般被作為緩存來使用。與強引用的區別是,軟引用在垃圾回收時,

虛擬機會根據當前系統的剩余內存來決定是否對軟引用進行回收。如果剩余內存比較緊張,則虛擬機會回收軟引用所引用的空間;如果剩余內存相對富裕,則不會進行回收。換句話說,虛擬機在發生OutOfMemory時,肯定是沒有軟引用存在的。 d) 弱引用:弱引用與軟引用類似,都是作為緩存來使用。但與軟引用不同,弱引用在

進行垃圾回收時,是壹定會被回收掉的,因此其生命周期只存在於壹個垃圾回收周期內。

JVM調優總結(三)-基本垃圾回收算法 7. 垃圾回收面臨的問題?

a) 如何區分垃圾。垃圾回收的起點是壹些根對象(java棧, 靜態變量, 寄存器...)。而

最簡單的Java棧就是Java程序執行的main函數 b) 如何處理碎片。“復制”方式和“標記-整理”方式,都可以解決碎片的問題。 c) 如何解決同時存在的對象創建和對象回收問題;在現有的垃圾回收方式中,要進行

垃圾回收前,壹般都需要暫停整個應用(即:暫停內存的分配),然後進行垃圾回收,回收完成後再繼續應用?

8. 分代垃圾回收詳述?

a) 為什麽要分代:不同的對象的生命周期是不壹樣的。因此,不同生命周期的對象可

以采取不同的收集方式,以便提高回收效率。?

b) 如何分代虛擬機中的***劃分為三個代:年輕代(Young Generation)、年老點(OldGeneration)和持久代(Permanent Generation)。其中持久代主要存放的是Java類的類信息,與垃圾收集要收集的Java對象關系不大。年輕代和年老代的劃分是對垃圾收集影響比較大的

什麽情況下觸發垃圾回收GC有兩種類型:Scavenge GC(當新對象生成,並且在Eden

申請空間失敗時,就會觸發Scavenge GC,對Eden區域進行GC,清除非存活對象,並且把尚且存活的對象移動到Survivor區)和Full GC(對整個堆進行回收)

典型配置舉例?

a) 堆大小設置?

b) 回收器選擇。串行收集器、並行收集器、並發收集器,但是串行收集器只適用於小

數據量的情況,所以這裏的選擇主要針對並行收集器和並發收集器。

垃圾回收的瓶頸?

a) 傳統分代垃圾回收方式,已經在壹定程度上把垃圾回收給應用帶來的負擔降到了最

小,把應用的吞吐量推到了壹個極限。但是他無法解決的壹個問題,就是Full GC所帶來的應用暫停

學習java的夥伴加我的 群去下載視頻資料 540-998-279!

  • 上一篇:智能投顧 這三道關若跨不過去 沒戲!
  • 下一篇:我的電腦是不是有病毒 仁慈的大哥答復我 小弟在線等
  • copyright 2024編程學習大全網