日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java如何将线程与cpu的核绑定_JVM(13)年轻代垃圾回收器ParNew是如何工作的?

發(fā)布時(shí)間:2025/3/20 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java如何将线程与cpu的核绑定_JVM(13)年轻代垃圾回收器ParNew是如何工作的? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

喜歡文章的可以關(guān)注下公眾號(hào)!謝謝支持!!


????之前的文章已經(jīng)把整個(gè)JVM的核心運(yùn)行原理梳理清楚了:

????【1】對(duì)象在新生代分配,什么時(shí)候會(huì)觸發(fā)Minor GC。? ?

????【2】觸發(fā)Minor GC之前會(huì)如何檢查老年代可用內(nèi)存大小和新生代對(duì)象大小,如何檢查老年代可用內(nèi)存大小和歷次Minor GC之后升入老年代的平均對(duì)象大小。
????【3】什么情況下Minor GC之前會(huì)提前觸發(fā)Full GC,什么情況下會(huì)直接觸發(fā)Minor GC。
????【4】Minor GC之后有哪幾種情況對(duì)象會(huì)進(jìn)入老年代。

????也大概知道了垃圾回收器、垃圾回收線程、垃圾回收算法之間的關(guān)系,包括垃圾回收的過(guò)程中的“Stop the World”現(xiàn)象和場(chǎng)景對(duì)系統(tǒng)運(yùn)行性能的影響。

? ? =>JVM(8)對(duì)象觸發(fā)回收的條件

????=>JVM(9)JVM的垃圾回收算法,以及優(yōu)劣

????=>JVM(10)年輕代和老年代適合的算法

????=>JVM(11)記錄一次JVM的問(wèn)題與優(yōu)化思路

????=>JVM(12)讓人無(wú)奈的"Stop the world"

????接下去的文章我們就要對(duì)常見(jiàn)的新生代和老年代的垃圾回收器的運(yùn)行原理進(jìn)行了解,以及常見(jiàn)的垃圾回收參數(shù)一般的設(shè)置方式。

????新生代垃圾回收器:ParNew

????一般來(lái)說(shuō),在之前沒(méi)有最新的G1垃圾回收器的話,線上系統(tǒng)都是ParNew垃圾回收器作為新生代的垃圾回收器。現(xiàn)在即使有了G1,其實(shí)很多線上系統(tǒng)還是用的ParNew。
????通常運(yùn)行在服務(wù)器上的Java系統(tǒng),都可以充分利用服務(wù)器的多核CPU的優(yōu)勢(shì),假設(shè)你的服務(wù)器是4核CPU,如果對(duì)新生代垃圾回收的時(shí)候,僅僅使用單線程進(jìn)行垃圾回收,是不是會(huì)導(dǎo)致沒(méi)法充分利用CPU資源?

????如上圖,在垃圾回收的時(shí)候,都把系統(tǒng)程序所有的工作線程全部停掉了,就一個(gè)垃圾回收線程在運(yùn)行,那么此時(shí)4核CPU的資源根本沒(méi)法充分利用,理論上4核CPU就可以支持4個(gè)垃圾回收線程并行執(zhí)行,可以提升4倍的性能!
????所以說(shuō),新生代的ParNew垃圾回收器就是多線程垃圾回收機(jī)制,另外一種Serial垃圾回收器是單線程垃圾回收,他們倆都是回收新生代的,唯一的區(qū)別就是單線程和多線程的區(qū)別,但是垃圾回收算法是完全一樣的。
????看下圖,ParNew垃圾回收器如果一旦在合適的時(shí)機(jī)執(zhí)行Minor GC的時(shí)候,就會(huì)把系統(tǒng)程序的工作線程全部停掉,禁止程序繼續(xù)運(yùn)行創(chuàng)建新的對(duì)象,然后自己就用多個(gè)垃圾回收線程去進(jìn)行垃圾回收,回收的機(jī)制和算法就跟之前文章介紹的是一樣的。

????如何為系統(tǒng)指定使用ParNew垃圾回收器?


????一般來(lái)說(shuō),對(duì)于系統(tǒng)部署啟動(dòng)的時(shí)候,我們有多種方式來(lái)設(shè)置JVM參數(shù)了,在IntelliJ IDEA中可以設(shè)置Debug JVM Arguments,使用“java -jar”命令啟動(dòng)時(shí)直接在后面跟上JVM參數(shù)即可。部署到Tomcat時(shí)可以在Tomcat的catalina.sh中設(shè)置Tomcat的JVM參數(shù),使用Spring Boot也可以在啟動(dòng)時(shí)指定JVM參數(shù)。

????在啟動(dòng)系統(tǒng)的時(shí)候如果要指定使用ParNew垃圾回收器,是用什么參數(shù)呢??

????很簡(jiǎn)單,使用“-XX:+UseParNewGC”選項(xiàng),JVM啟動(dòng)之后對(duì)新生代進(jìn)行垃圾回收的,就是ParNew垃圾回收器了。那么Minor GC的時(shí)機(jī),檢查機(jī)制,包括垃圾回收的具體過(guò)程,以及對(duì)象升入老年代的機(jī)制,都是我們之前介紹的那套原理,只需要知道,ParNew會(huì)使用多個(gè)線程來(lái)進(jìn)行垃圾回收。

????ParNew垃圾回收器默認(rèn)情況下的線程數(shù)量

????因?yàn)楝F(xiàn)在一般我們系統(tǒng)的服務(wù)器都是多核CPU的,所以為了在垃圾回收的時(shí)候充分利用多核CPU的資源,一旦我們指定了使用ParNew垃圾回收器之后,默認(rèn)給自己設(shè)置的垃圾回收線程的數(shù)量就是跟CPU的核數(shù)是一樣的。
????比如我們線上機(jī)器假設(shè)用的是4核CPU,或者8核CPU,或者16核CPU,那么此時(shí)ParNew的垃圾回收線程數(shù)就會(huì)分別是4個(gè)線程、8個(gè)線程、16個(gè)線程,這一般不用我們手動(dòng)去調(diào)節(jié),因?yàn)楦鶦PU核數(shù)一樣的線程數(shù)量,是可以充分進(jìn)行并行處理的。
????比如下圖,每個(gè)線程都通過(guò)一個(gè)CPU在運(yùn)行:


????但是如果你一定要自己調(diào)節(jié)ParNew的垃圾回收線程數(shù)量,也是可以的,使用“-XX:ParallelGCThreads”參數(shù)即可,通過(guò)他可以設(shè)置線程的數(shù)量。

????所以可以一起思考一個(gè)問(wèn)題,到底是用單線程垃圾回收好,還是多線程垃圾回收好?到底是Serial垃圾回收器好還是ParNew垃圾回收器好?

????啟動(dòng)系統(tǒng)的時(shí)候是可以區(qū)分服務(wù)器模式和客戶端模式的,如果你啟動(dòng)系統(tǒng)的時(shí)候加入“-server”就是服務(wù)器模式,如果加入“-cilent”就是客戶端模式。他們倆的區(qū)別就是,如果你的系統(tǒng)部署在比如4核8G的Linux服務(wù)器上,那么就應(yīng)該用服務(wù)器模式,如果你的系統(tǒng)是運(yùn)行在比如Windows上的客戶端程序,那么就應(yīng)該是客戶端模式。

????那么服務(wù)器模式和客戶端模式的區(qū)別是什么呢?
????服務(wù)器模式通常運(yùn)行我們的網(wǎng)站系統(tǒng)、電商系統(tǒng)、業(yè)務(wù)系統(tǒng)、APP后臺(tái)系統(tǒng)之類的大型系統(tǒng),一般都是多核CPU,所以此時(shí)如果要垃圾回收,那么肯定是用ParNew更好,因?yàn)槎嗑€程并行垃圾回收,充分利用多核CPU資源,可以提升性能。如下圖。

????如果你部署在服務(wù)器上,但是你用了單線程垃圾回收,那么就有一些CPU是被浪費(fèi)了,根本沒(méi)用上。比如下圖:

????那么如果Java程序是一個(gè)客戶端程序,比如類似百度云網(wǎng)盤的Windows客戶端,或者是有道云筆記的Windows客戶端。這種操作系統(tǒng)很多都是單核CPU,此時(shí)你如果要是還是用ParNew來(lái)進(jìn)行垃圾回收,就會(huì)導(dǎo)致一個(gè)CPU運(yùn)行多個(gè)線程,反而加重了性能開(kāi)銷,可能效率還不如單線程好,因?yàn)閱蜟PU運(yùn)行多線程會(huì)導(dǎo)致頻繁的線上上下文切換,有效率開(kāi)銷,如下圖:


????所以是類似于那種運(yùn)行在Windows上的客戶端程序,建議采用Serial垃圾回收器,單CPU單線程垃圾回收即可,反而效率更高,如下圖。

????現(xiàn)在一般很少有用Java寫客戶端程序的,幾乎很少見(jiàn),Java現(xiàn)在主要是用來(lái)構(gòu)建復(fù)雜的大規(guī)模后端業(yè)務(wù)系統(tǒng)的,所以常見(jiàn)的還是用“-server”指定為服務(wù)器模式,然后配合ParNew多線程垃圾回收器。
????但還是建議應(yīng)該清楚單線程和多線程對(duì)垃圾回收的適用場(chǎng)景。

???? 如果大家對(duì)這塊有更好的見(jiàn)解以及問(wèn)題,或者本文有書寫錯(cuò)誤的地方,也可以進(jìn)行評(píng)論交流。點(diǎn)點(diǎn)關(guān)注哦!!!謝謝支持!

總結(jié)

以上是生活随笔為你收集整理的java如何将线程与cpu的核绑定_JVM(13)年轻代垃圾回收器ParNew是如何工作的?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: av成人在线免费观看 | 日韩城人视频 | 色操插| 国产日韩欧美一区 | 91av不卡 | 亚洲美女激情视频 | 国产午夜免费福利 | 2021亚洲天堂 | 欧美日韩激情在线一区二区三区 | 91蝌蚪91密月 | 91精彩视频在线观看 | www色亚洲| 免费一级毛片麻豆精品 | 欧美一级在线播放 | 奇米777第四色 | 欧美在线一区二区三区 | 潘金莲一级淫片aaaaa武则天 | 亚洲熟女综合色一区二区三区 | 四虎影视www在线播放 | 四虎黄色影视 | 牛牛电影国产一区二区 | 亚洲阿v天堂 | 男人捅爽女人 | 中文字幕精品无码一区二区 | 精品人妻一区二区乱码 | yjizz视频 | 日本泡妞xxxx免费视频软件 | 亚洲色图小说 | 亚洲网站av | 亚洲综合91| www.中文字幕在线观看 | 欧美 日韩 国产一区 | 男女做受视频 | 国产成人精品一区二区三区在线观看 | 国产精品久久久久久69 | 美女黄18以下禁止观看 | 涩涩在线看 | 亚洲精品v天堂中文字幕 | 欧美一区自拍 | 亚洲情涩 | 热久久中文 | 日韩电影精品 | 国产一级免费在线观看 | 人人妻人人澡人人爽欧美一区 | 最新av电影网站 | av毛片在线播放 | 久久亚洲视频 | 日韩极品一区 | 国产亚洲色婷婷久久 | 韩日av在线播放 | 日韩精品视频免费在线观看 | 免费午夜视频在线观看 | 成人片在线免费看 | 涩色网站| 性生交大片免费看 | 三男一女吃奶添下面 | 久久av导航 | 扒开jk护士狂揉免费 | 日本成人激情视频 | 日韩avxxx | 玩弄丰满少妇xxxxx性多毛 | 91美女片黄在线观看游戏 | 国产污视频在线观看 | 粗暴video蹂躏hd | 色亚洲天堂 | 日本新japanese乱熟 | 久久色视频 | 在线视频污 | 中国av一区 | 欧美xx孕妇 | 女生扒开腿让男生操 | 国产成人精品久久久 | 欧美色噜噜| 新国产视频| 亚洲v视频 | 91精品视频在线 | 久久av无码精品人妻出轨 | 久久久久久99精品久久久 | 欧美激情视频一区二区三区在线播放 | 精品小视频在线观看 | 丝袜熟女一区二区三区 | 手机av资源| 啪啪网站视频 | 国产精品一区二区不卡 | 亚洲va国产va天堂va久久 | 国产九九九| 亚洲国产精品成人综合色在线婷婷 | 玖玖国产精品视频 | 激情综合婷婷 | 国内自拍视频在线观看 | 借种(出轨高h) | 国产精品成人va在线观看 | 日本一级大片 | 国产一区中文字幕 | 日韩欧美一区二区三区免费观看 | 国产在线色视频 | 长河落日电视连续剧免费观看01 | 中国美女黄色 | 国产精品视频一区二区三区 |