深入學習虛擬機-01JVM與Java體系結構

1. JVM與Java體系結構

1.1 你是否也遇到過這些問題?

  • 運行這的線上系統突然就卡死,系統無法訪問,甚至直接OOM
  • 想解決向上JVM GC問題,但卻無從下手
  • 新項目上線,對各種JVM參數設置一臉迷茫,直接默認吧,然後就JJ了
  • 每次面試之前都要重新背一遍JVM的一些原理概念性的東西,然後面試官卻經常問你在實際項目中如何調優JVM參數,如何解決GC、OOM等問題,一臉懵逼。
    以上情況都遇到過,而且不止一次

1.2 我們寫的應用程序結構

在這裏插入圖片描述

  • 一些有一定工作經驗的開發人員,打心眼兒裏覺得SSM、微服務等上層技術纔是重點,基礎技術並不重要,這其實是一種本末倒置的病態。
  • 如果我們把核心類庫的API比作數學公式的話,那麼Java虛擬機的只是就好不公式的推到過程。

1.3 我們爲什麼要學習JVM?

  • 面試的需要(BATJ、TMD、PKQ等面試都愛問)
  • 中高級程序員的必備技能(項目管理、調優的需要)
  • 追求極客的精神(垃圾回收算法、JIT、底層原理)
    在這裏插入圖片描述
    垃圾收集機制爲我們打理了很多繁瑣的工作,大大提高了開發的效率,但是,垃圾收集也不是萬能的,懂得JVM內部的內存結構、工作機制,是設計高擴展性應用的基礎,也是Java工程師進階的必備能力。

1.4 Java生態圈

Java是目前最廣泛的軟件開發平臺之一。隨着Java以及Java社區的不斷壯大,Java也早已不再是簡簡單單的一門計算機語言了,它更是一個平臺、一種文化、一個社區。

  • 作爲一個平臺,Java虛擬機扮演者舉足輕重的作用。
    Groovy、Scala、JRuby、Kotlin等都是Java平臺的一部分
  • 作爲一種文化,Java幾乎成爲了“開源”的代名詞。
    • 第三方開源軟件和框架。如Tomcat、Struct、Mybatis、Spring等。
    • Jdk和Jvm本身也有不少開源的實現,如OpenJDK、Harmony.
  • 作爲一個社區,Java擁有全世界最多的技術擁護者和開源社區支持,有數不清的論壇和資料。從桌面應用軟件、嵌入式開發到企業級應用、後臺服務器、中間件、都可以看到Java的影子。

1.4.1 跨平臺的語言

Java語言在興起的時候,宣稱是編寫一次,到處運行。可以跨不同的平臺。
在這裏插入圖片描述

1.4.2 跨語言的平臺

Jdk是跨語言的平臺,只要符合java虛擬機的規範,都可以在jvm上運行。

  • 隨着Java7的正式發佈,Java虛擬機的設計者們通過JSR-292規範基本實現在Java虛擬機平臺上運行非Java語言編寫的程序。
  • Java虛擬機根本不關心運行在其內部的程序到底是使用何種語言編寫的,它只關心“字節碼”文件。也就是說Java虛擬機擁有語言無關性,並不會單純地與Java語言“終身綁定”,只要其他編程語言的編譯結果滿足幷包含Java虛擬機的內部指令集、符號表以及其他的輔助信息,它就是一個有效的字節碼文件,就能夠被虛擬機所識別並裝載運行。
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章