真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java虛擬機中如何進行性能調優(yōu)

這篇文章的內容主要圍繞Java虛擬機中如何進行性能調優(yōu)進行講述,文章內容清晰易懂,條理清晰,非常適合新手學習,值得大家去閱讀。感興趣的朋友可以跟隨小編一起閱讀吧。希望大家通過這篇文章有所收獲!

環(huán)縣網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、成都響應式網(wǎng)站建設公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)公司自2013年起到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選成都創(chuàng)新互聯(lián)公司。

一.  如何找到一個垃圾?

1)  引用計數(shù)算法:給對象添加一個引用計數(shù)器,有一次引用,計數(shù)器值就加1;當引用失效時,計數(shù)器值就減1。很多流程的編程語言例如Python都使用這種方法管理內存,但是主流的Java虛擬機沒有選用它,主要原因是它很難解決對象之間相互循環(huán)引用的問題。

2)  根可達性分析算法:因為引用計數(shù)算法無法解決對象之間相互循環(huán)引用的問題,繼而引出了這個算法。思想是以GC Roots作為起始點開始向下搜索,所走過的路徑成為引用鏈,當一個對象到GC Roots沒有任何引用鏈時,則這個對象是不可用的,就是垃圾。

二.  找到一個垃圾后,如何清除它?

1)  Mark-Sweep(標記清除):先標記出可回收的對象,然后清除。如下黑色部分為可回收對象,灰色部分為存活對象,綠色部分為未使用對象。

它的主要不足有兩個:

1. 標記和清除兩個過程的效率都不高

2. 另一個是空間的問題,標記清除之后產(chǎn)生了大量不連續(xù)的內存碎片,碎片會導致以后需要分配較大對象時,無法找到足夠的連續(xù)內存,繼而提前觸發(fā)另一次垃圾收集動作。

2)  Copying(拷貝):將內存劃分為兩塊,將存活對象全部copy到下面的區(qū)域,然后把上面的全部清除。

新生代中的Survivor1和Survivor2就是這樣的。

缺點:浪費內存

3)  Mark-Compact(標記壓縮或者標記整理):既不想碎片化,又不想浪費內存,就先將回收的對象標記起來,然后一邊回收,一邊把存活對象向一端移動。

缺點:效率偏低

3. CMS 全稱 ConcurrentMarkSweep 老年代 并發(fā)的,垃圾回收和應用程序同時進行,降低STW的時間(200ms),CMS問題很多,所以沒有一個版本默認是CMS,只能手動設定。CMS既然是MarkSweep,就一定會有碎片化的問題,碎片達到一定的程度,CMS老年代分配對象分配不下的時候,使用Serial Old進行老年代回收。(面試重災區(qū))

主要有四個過程:

初始標記、并發(fā)標記、重新標記、并發(fā)清理

CMS的缺點是:產(chǎn)生了浮動垃圾,并且使用Serial Old來清理整個老年代,這是CMS設計的缺陷;但是如果CMS做好調優(yōu),支持的內存要比Parallel Old大的多。

想象一下:

PS + PO -> 加內存 換垃圾回收器 -> PN + CMS + Serial Old (幾個小時-幾天的STW) ,幾十個G 的內存,單線程的回收 -> G1 + Full GC  幾十個G -> 上T內存的服務器 ZGC 

CMS并發(fā)標記采用的是: 三色標記法 + Incremental Update

4.  G1 垃圾回收器 (200ms - 10 ms)

算法:三色標記 + SATB

由于越來越多的內存需要回收,必然會產(chǎn)生STW,所以G1應運而生。

邏輯分代,物理不分代。

4.  ZGC (10ms - 1ms )  PK C++

算法:ColoredPointers + LoadBarrier

5.  Shenandoah

算法:ColorPointers + WriteBarrier

CMS中新生代的默認年齡是6,PS/PO中新生代的默認年齡是15,進入老年代,可以通過參數(shù):-XX:MaxTenuringThreshold配置

jdk1.0自帶的Serial和Serial Old,現(xiàn)在用的最多的是Parallel Scavenge和Parallel Old,調優(yōu)用的是ParNew和CMS,jdk1.8用G1也沒有問題

jdk1.8默認是Parallel Scavenge和Parallel Old,不管是單線程Serial還是并行Parallel,只要人多,都會出現(xiàn)問題,所以就有了承前啟后的ParNew和CMS。

Java的特點有哪些

Java的特點有哪些 1.Java語言作為靜態(tài)面向對象編程語言的代表,實現(xiàn)了面向對象理論,允許程序員以優(yōu)雅的思維方式進行復雜的編程。 2.Java具有簡單性、面向對象、分布式、安全性、平臺獨立與可移植性、動態(tài)性等特點。 3.使用Java可以編寫桌面應用程序、Web應用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應用程序等。

感謝你的閱讀,相信你對“Java虛擬機中如何進行性能調優(yōu)”這一問題有一定的了解,快去動手實踐吧,如果想了解更多相關知識點,可以關注創(chuàng)新互聯(lián)網(wǎng)站!小編會繼續(xù)為大家?guī)砀玫奈恼拢?/p>
網(wǎng)頁標題:Java虛擬機中如何進行性能調優(yōu)
瀏覽地址:http://weahome.cn/article/jjgihc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部