JVM垃圾回收行為的並行與並發


程序的並行和並發

程序的並發(Concurrent)

  • 在操作系統中,是指一個時間段中有幾個程序都處於己啟動運行到運行完畢之間,且這幾個程序都是在同一個處理器_上運行。
  • 並發不是真正意義上的“同時進行”,只是CPU把一個時間段划分成幾個時間片段(時間區間),然后在這幾個時間區間之間來回切換,由於CPU處理的速度非常快,只要時間間隔處理得當,即可讓用戶感覺是多個應用程序同時在進行。

程序的並行(Parallel)

  • 當系統有一個以上CPU時,當一個CPU執行一個進程時,另一個CPU可以執行另一個進程,兩個進程互不搶占CPU資源,可以同時進行,我們稱之為並行(Parallel)。
  • 其實決定並行的因素不是CPU的數量,而是CPU的核心數量,比如一個CPU多個核也可以 並行。
  • 適合科學計算,后台處理等弱交互場景

二者對比

  • 並發,指的是多個事情,在同一時間段內同時發生了。
  • 並行,指的是多個事情,在同一時間點上同時發生了。
  • 並發的多個任務之間是互相搶占資源的。
  • 並行的多個任務之間是不互相搶占資源的。
  • 只有在多CPU或者一個CPU多核的情況中,才會發生並行。否則,看似同時發生的事情,其實都是並發執行的。

垃圾回收的並發與並行

並發和並行,在談論垃圾收集器的上下文語境中,它們可以解釋如下:

  • 並行(Parallel) :指多條垃圾收集線程並行工作,但此時用戶線程仍處於等待狀態。

    • 如ParNew、 Parallel Scavenge、 Parallel 0ld;
  • 串行(Serial)

    • 相較於並行的概念,單線程執行。
    • 如果內存不夠,則程序暫停,啟動JVM垃圾回收器進行垃圾回收。回收完,再啟動程序的線程。
  • 並發(Concurrent) :指用戶線程與垃圾收集線程同時執行(但不一定是並行的,可能會交替執行),垃圾回收線程在執行時不會停頓用戶程序的運行。
    • ➢用戶程序在繼續運行,而垃圾收集程序線程運行於另一個CPU上;
    • ➢如: CMS、G1

 

 


 

 


免責聲明!

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



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