1. java jvm講解
JVM是Java Virtual Machine(Java虛擬機)的縮寫,JVM是一種用於計算設備的規范,它是一個虛構出來的計算機,是通過在實際的計算機上模擬模擬各種計算機功能來實現的。
Java語言的一個非常重要的特點就是與平台的無關性。而使用Java虛擬機是實現這一特點的關鍵。一般的高級語言如果要在不同的平台上運行,至少需要編譯成不同的目標代碼。而引入Java語言虛擬機後,Java語言在不同平台上運行時不需要重新編譯。Java語言使用Java虛擬機屏蔽了與具體平台相關的信息,使得Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(位元組碼),就可以在多種平台上不加修改地運行。Java虛擬機在執行位元組碼時,把位元組碼解釋成具體平台上的機器指令執行。這就是Java的能夠「一次編譯,到處運行」的原因。
從Java平台的邏輯結構上來看,我們可以從下圖來了解JVM:
2. 誰能給我解釋一下 "Java運行系統是各供應商對JVM的具體實現" 這一句話該怎麼理解我菜。。
就根本來說,Java還是運行在JVM虛擬機下的.但是,現在有很多Java運行系統,它把抽象的JVM虛擬機給弄得可見並且形象了.讓人們易於接受.
舉個例子來說吧, 比如我們的手機通信,本質上是無線電波的交互,但是,我們通過手機這個工具來實現,JVM虛擬機就相當於手機,而Java運行系統就相當於手機上運行的軟體了,他讓我們的通信變得具體,形象.
3. <解惑>jvm如何理解java泛型類
public class Test<E>{ public static void main(String args[]){ Test<String> test=new Test<String>(); } } 主要是你實例化的時候E要能確定下來,或者說要讓編譯器知道它轉能成什麼。比如這種方式也是可以的 public static <T> void run(Class<T> clazz) { Test<T> test = new Test<T>(); } 程序在運行的時候T類型就能定下來,所以它也能new出來
4. 學習java有必要看 深入jvm 嗎
有必要。
剛好之前面試被問到類似的問題,所以簡單的說一下(有空的話詳細補充一下)。
首先我們廣泛使用的JVM一般是HotSpot虛擬機,HotSpot有兩個JVM的實現。
一個是`Java HotSpot Cilent VM`,另一個是`Java HotSpot Server VM`。
前者致力於在客戶端環境中減少啟動時間而優化,後者在伺服器環境中最大化程序執行速度而設計。
學習JVM主要是,理解編譯過程,理解內存分配與垃圾回收,以及線程資源分配等問題。
可以從下面幾方面入手:
編譯過程(Compile)
內存分配(Memory)
執行時間(Runtime)
垃圾回收(Garbage Collection)
線程資源方面(Thread)
與虛擬機相關的異常處理(Exception)
根據業務特點調整JVM:
修改JVM參數,修改堆的初始大小和最大堆大小,修改年輕帶與持久代的大小,修改每個線程的堆棧大小等等。
當然,在處理網站性能問題上,很多人在業務層上想辦法,有人堅持做出了更好的JVM,例如這個Zing
當然,你說不在乎這些東西,了解這些東西浪費時間。
那幫老闆畫畫界面,用個開源庫寫寫業務邏輯,改改bug,幫老闆賺錢,也是極好的。
5. JVM,JRE,JDK各是什麼含義之間的關系
JVM為Java Virtual Machine(Java虛擬機)的縮寫,JVM為一種用於計算設備的規范,它是一個虛構出來的計算機,是通過在實際的計算機上模擬模擬各種計算機功能來實現的。
Java運行環境(Java Runtime Environment,簡稱JRE)為一個軟體,由太陽微系統所研發,JRE可以讓計算機系統運行Java應用程序(Java Application)。
JDK為Java語言的軟體開發工具包,主要用於移動設備、嵌入式設備上的java應用程序。JDK為整個java開發的核心,它包含了JAVA的運行環境(JVM+Java系統類庫)和JAVA工具。
JRE包括兩部分:Java Runtime Environment和Java Plug-in,JavaRuntimeEnvironment(JRE)為可以在其上運行、測試和傳輸應用程序的Java平台,它包括Java虛擬機(jvm)、Java核心類庫和支持文件。
它不包含開發工具(JDK)-編譯器、調試器和其它工具。JRE需要輔助軟體Java Plug-in以便在瀏覽器中運行applet。
(5)對javajvm的理解擴展閱讀
Java平台可分為兩部分,即Java虛擬機(Java virtual machine,JVM)和Java API類庫。Java虛擬機主要分為五大模塊:類裝載器子系統、運行時數據區、執行引擎、本地方法介面和垃圾收集模塊。
其中垃圾收集模塊在Java虛擬機規范中並沒有要求Java虛擬機垃圾收集,但是在沒有發明無限的內存之前,大多數JVM實現都是有垃圾收集的。
而運行時數據區都會以某種形式存在於每一個JAVA虛擬機實例中,但是Java虛擬機規范對它的描述卻是相當抽象。這些運行時數據結構上的細節,大多數都由具體實現的設計者決定。
6. 什麼是JVMJava跨平台的原理是什麼
首先我們要理解什麼是跨平台,所謂的跨平台就是JAVA寫的一份代碼可以在任意的操作系統平台上運行。
為什麼跨平台會成為一個問題呢?因為每一個操作系統平台支持不同的指令集我們所寫的代碼經過編譯之後只能適用於一個平台,換一個平台就不支持了。而JAVA完美的解決了這個問題。
Java的一大特色就是「write once, run anywhere」即「一次編譯,到處運行」。就是說你不用專門為每個平台寫一份代碼,你寫的Java程序在任何平台都能跑起來。
它的實現原理是在系統層面上又增加了一層虛擬機(Java Virtual Machine,簡稱JVM),且為每個平台都定製了對應的虛擬機。然後Java程序是在虛擬機上跑的,因此平台無關。
Java的運行流程是:程序員寫了源代碼(Source Code,.java後綴,跨平台),然後經過編譯器編譯成位元組碼(Byte Code,.class後綴,二進制文件),位元組碼是所有虛擬機都能理解的中間文件。然後交給虛擬機(每個平台都有對應的虛擬機)去運行。
所以對「write once, run anywhere」更准確的理解是,「一次編譯,到處裝虛擬機,所以到處運行」。
整個流程如下圖所示。
7. 如何簡單理解jvm的原理呢
JVM工作原理和特點主要是指操作系統裝入JVM是通過jdk中Java.exe來完成,通過下面4步來完成JVM環境. 1.創建JVM裝載環境和配置 2.裝載JVM.dll 3.初始化JVM.dll並掛界到JNIENV(JNI調用介面)實例 4.調用JNIEnv實例裝載並處理class類。
8. jvm的理解
JVM主要就是為java程序提供一個運行環境,包括類的載入,內存的分配,垃圾的回收,JVM將內存劃分為堆,虛擬機棧,線程計數器,本地方法棧,方法區五個內存區域。
為了滿足java程序運行時的垃圾回收,jvm提供了一些垃圾回收器用於堆內存的回收,常用的垃圾收集器包括ParNew新生代垃圾收集器,cms老年代垃圾收集器,G1垃圾收集器,這些垃圾收集器根據年齡代對象的特點使用不同的垃圾回收演算法,為了解決垃圾收集時GC停頓對於Java程序的影響,使用一些參數的配置盡量減少垃圾回收時的停頓。
比如ParNew新生代垃圾收集器採用復制收集演算法,使用多線程收集,提高垃圾回收的效率,CMS採用分段收集,對於比較耗時的階段允許用戶線程並行,但隨之而來的也會導致一些缺陷,比如浮動垃圾,cpu資源緊張,內存碎片的問題,對於這些問題,可以通過JVM調優去盡量避免,比如浮動垃圾則可以減小CMS垃圾回收的老年代內存閾值。
G1垃圾收集器則採用可控的GC停頓時間來進行垃圾回收,將內存劃分為一個個小的region,邏輯上劃分出年輕代和老年代,所以G1垃圾收集器的調優主要就是對於GC停頓時間的調優,太大可能會導致每次GC停頓時間太長,太小可能導致GC發生的太頻繁。
對於JVM調優這個話題,我們主要要保證減少YGC的次數,和盡量避免Full GC,因為對老年代的回收由於存活的對象比較多,回收是比較耗時的,那麼對於這目標的實現,我們主要圍繞一個思想來做,就是盡量保證每次回收後存活的對象可以存放在s區,這些都需要對程序有一個預測和平時的JVM觀測
9. Java中API,JVM的含義是什麼
JVM是JAVA虛擬機的意思,API是介面的意思,可以理解成他是JDK那些類庫的詳細介紹的文檔