阿里openJDK知識整理及概念


上周同事去聽了阿里openJDK的講座,收集整理了一下。隨着Oracle 撒手,Java 8 官方支持時間持續到 2020 年 12 月;對商業用戶(Commercial Users),2019 年 1 月之后不再提供免費更新。

華為openJDK特性

主要講解了協程之間的優化概念,及性能優化講解

阿里openJDK特性(Alibaba Dragonwell 8 )

1.控移植上游 Java 11 的 Java Flight Recorder (JFR) 功能。

2.集成 JWarmup 技術(預熱功能)

3.提供 GC 問題診斷等 Serviceability 方面的提高。

我把知識筆記整理了一下:

  1、進程

進程是具有一定獨立功能的程序關於某個數據集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位。每個進程都有自己的獨立內存空間,不同進程通過進程間通信來通信。由於進程比較重量,占據獨立的內存,所以上下文進程間的切換開銷(棧、寄存器、虛擬內存、文件句柄等)比較大,但相對比較穩定安全。

  2、線程

線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位.線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源。線程間通信主要通過共享內存,上下文切換很快,資源開銷較少,但相比進程不夠穩定容易丟失數據。

  3、協程(用戶態線程簡稱為協程)

協程是一種用戶態的輕量級線程,協程的調度完全由用戶控制。協程擁有自己的寄存器上下文和棧。協程調度切換時,將寄存器上下文和棧保存到其他地方,在切回來的時候,恢復先前保存的寄存器上下文和棧,直接操作棧則基本沒有內核切換的開銷,可以不加鎖的訪問全局變量,所以上下文的切換非常快。

  • 如果連時鍾阻塞、 線程切換這些功能我們都不需要了,自己在進程里面寫一個邏輯流調度的東西。那么我們即可以利用到並發優勢,又可以避免反復系統調用,還有進程切換造成的開銷,分分鍾給你上幾千個邏輯流不費力。這就是用戶態線程
  • 從上面可以看到,實現一個用戶態線程有兩個必須要處理的問題:一是碰着阻塞式I\O會導致整個進程被掛起;二是由於缺乏時鍾阻塞,進程需要自己擁有調度線程的能力。如果一種實現使得每個線程需要自己通過調用某個方法,主動交出控制權。那么我們就稱這種用戶態線程是協作式的,即是協程

http://www.zhihu.com/question/20511233

  4、Daemon
  Daemon()程序是一直運行的服務端 程序,又稱為 守護進程。通常在系統后台運行,沒有控制終端,不與前台交互,Daemon程序一般作為 系統服務使 用。Daemon是長時間運行的進程,通常在系統啟動后就運行,在系統關閉時才結束。一般說Daemon程序在后台運行,是因為它沒有控制終端,無法和前 台的用戶交互。Daemon程序一般都作為服務程序使用,等待客戶端程序與它通信。我們也把運行的Daemon程序稱作守護進程。
 
  5.多租戶概念
  多租戶技術可以實現多個租戶之間共享系統實例,同時又可以實現租戶的系統實例的個性化定制。通過使用多租戶技術可以保證系統共性的部分被共享,個性的部分被單獨隔離。通過在多個租戶之間的資源復用,運營管理維護資源,有效節省開發應用的成本。而且,在租戶之間共享應用程序的單個實例,可以實現當應用程序升級時,所有租戶可以同時升級。同時,因為多個租戶共享一份系統的核心代碼,因此當系統升級時,只需要升級相同的核心代碼即可。

  6.Wisp 協程

  阿里協程優化。

  7.ZenGC 

  阿里大數據場景的定制版 ZenGC (G1 based)發布

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM