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