java-垃圾回收的并行与并发
目錄
并發(Concurrent)
并行(Parallel)
并發vs并行
垃圾回收的并發與并行
并發(Concurrent)
1.在操作系統中,是指一個時間段中有幾個程序都處于已啟動運行到運行完畢之間,且這幾個程序都是在同一個處理器上運行。
2.并發不是真正意義上的“同時進行”,只是CPU把一個時間段劃分成幾個時間片段(時間區間),然后在這幾個時間區間之間來回切換,由于CPU?處理的速度非常快,只要時間間隔處理得當,即可讓用戶感覺是多個應用程序同時在進行。
?
并行(Parallel)
1.當系統有一個以上CPU時,當一個CPU執行一個進程時,另一個CPU可以執行另一個進程,兩個進程互不搶占CPU資源,可以同時進行,我們稱之為并行(Parallel)。
2.其實決定并行的因素不是CPU的數量,而是CPU的核心數量,比如一個CPU多個核也可以并行。
3.適合科學計算,后臺處理等弱交互場景。
?
并發vs并行
? ? 并發,指的是多個事情,在同一時間段內同時發生了。
? ? 并行,指的是多個事情,在同一時間點上同時發生了。
? ? 并發的多個任務之間是互相搶占資源的。
? ? 并行的多個任務之間是不互相搶占資源的。
? ? 只有在多CPU或者一個CPU多核的情況中,才會發生并行。
? ? 否則,看似同時發生的事情,其實都是并發執行的。
垃圾回收的并發與并行
并發和并行,在談論垃圾收集器的上下文語境中,它們可以解釋如下:
· 并行(Parallel)指多條垃圾收集線程并行工作,但此時用戶線程仍處于等待狀態。
?? ?如ParNew、Parallel?Scavenge、Parallel?Old;
·?串行(Serial)
? ? 相較于并行的概念,單線程執行。
? ? 如果內存不夠,則程序暫停,啟動JVM垃圾回收器進行垃圾回收。回收完在啟動程序的線程。
?
·?并發(Concurrent):指用戶線程與垃圾收集線程同時執行(但不一定是并行的,可能會交替執行),垃圾回收線程在執行時不會停頓用戶程序的運行。
? ? 用戶程序在繼續運行,而垃圾收集程序線程運行于另一個CPU上;
? ? 如:CMS、G1。
?
總結
以上是生活随笔為你收集整理的java-垃圾回收的并行与并发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java强引用、软引用、弱引用、虚引用-
- 下一篇: 使用JProfiler查看GC Root