国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

06-JVM 性能調(diào)優(yōu)

這篇具有很好參考價值的文章主要介紹了06-JVM 性能調(diào)優(yōu)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

JVM 性能調(diào)優(yōu)

在高性能硬件上部署程序,目前主要有兩種方式:

  • 通過 64 位 JDK 來使用大內(nèi)存;
  • 使用若干個 32 位虛擬機建立邏輯集群來利用硬件資源。

使用 64 位 JDK 管理大內(nèi)存

堆內(nèi)存變大后,雖然垃圾收集的頻率減少了,但每次垃圾回收的時間變長。 如果堆內(nèi)存為 14 G,那么每次 Full GC 將長達數(shù)十秒。如果 Full GC 頻繁發(fā)生,那么對于一個網(wǎng)站來說是無法忍受的。

對于用戶交互性強、對停頓時間敏感的系統(tǒng),可以給 Java 虛擬機分配超大堆的前提是有把握把應(yīng)用程序的 Full GC 頻率控制得足夠低,至少要低到不會影響用戶使用。

可能面臨的問題:

  • 內(nèi)存回收導(dǎo)致的長時間停頓;
  • 現(xiàn)階段,64 位 JDK 的性能普遍比 32 位 JDK 低;
  • 需要保證程序足夠穩(wěn)定,因為這種應(yīng)用要是產(chǎn)生堆溢出幾乎就無法產(chǎn)生堆轉(zhuǎn)儲快照(因為要產(chǎn)生超過 10GB 的 Dump 文件),哪怕產(chǎn)生了快照也幾乎無法進行分析;
  • 相同程序在 64 位 JDK 消耗的內(nèi)存一般比 32 位 JDK 大,這是由于指針膨脹,以及數(shù)據(jù)類型對齊補白等因素導(dǎo)致的。

使用 32 位 JVM 建立邏輯集群

在一臺物理機器上啟動多個應(yīng)用服務(wù)器進程,每個服務(wù)器進程分配不同端口, 然后在前端搭建一個負載均衡器,以反向代理的方式來分配訪問請求。

考慮到在一臺物理機器上建立邏輯集群的目的僅僅是為了盡可能利用硬件資源,并不需要關(guān)心狀態(tài)保留、熱轉(zhuǎn)移之類的高可用性能需求, 也不需要保證每個虛擬機進程有絕對的均衡負載,因此使用無 Session 復(fù)制的親合式集群是一個不錯的選擇。 我們僅僅需要保障集群具備親合性,也就是均衡器按一定的規(guī)則算法(一般根據(jù) SessionID 分配) 將一個固定的用戶請求永遠分配到固定的一個集群節(jié)點進行處理即可。

可能遇到的問題:

  • 盡量避免節(jié)點競爭全局資源,如磁盤競爭,各個節(jié)點如果同時訪問某個磁盤文件的話,很可能導(dǎo)致 IO 異常;
  • 很難高效利用資源池,如連接池,一般都是在節(jié)點建立自己獨立的連接池,這樣有可能導(dǎo)致一些節(jié)點池滿了而另外一些節(jié)點仍有較多空余;
  • 各個節(jié)點受到 32 位的內(nèi)存限制;
  • 大量使用本地緩存的應(yīng)用,在邏輯集群中會造成較大的內(nèi)存浪費,因為每個邏輯節(jié)點都有一份緩存,這時候可以考慮把本地緩存改成集中式緩存。

調(diào)優(yōu)案例分析與實戰(zhàn)

場景描述

一個小型系統(tǒng),使用 32 位 JDK,4G 內(nèi)存,測試期間發(fā)現(xiàn)服務(wù)端不定時拋出內(nèi)存溢出異常。 加入 -XX:+HeapDumpOnOutOfMemoryError(添加這個參數(shù)后,堆內(nèi)存溢出時就會輸出異常日志), 但再次發(fā)生內(nèi)存溢出時,沒有生成相關(guān)異常日志。

分析

在 32 位 JDK 上,1.6G 分配給堆,還有一部分分配給 JVM 的其他內(nèi)存,直接內(nèi)存最大也只能在剩余的 0.4G 空間中分出一部分, 如果使用了 NIO,JVM 會在 JVM 內(nèi)存之外分配內(nèi)存空間,那么就要小心“直接內(nèi)存”不足時發(fā)生內(nèi)存溢出異常了。

直接內(nèi)存的回收過程

直接內(nèi)存雖然不是 JVM 內(nèi)存空間,但它的垃圾回收也由 JVM 負責(zé)。

垃圾收集進行時,虛擬機雖然會對直接內(nèi)存進行回收, 但是直接內(nèi)存卻不能像新生代、老年代那樣,發(fā)現(xiàn)空間不足了就通知收集器進行垃圾回收, 它只能等老年代滿了后 Full GC,然后“順便”幫它清理掉內(nèi)存的廢棄對象。 否則只能一直等到拋出內(nèi)存溢出異常時,先 catch 掉,再在 catch 塊里大喊 “System.gc()”。 要是虛擬機還是不聽,那就只能眼睜睜看著堆中還有許多空閑內(nèi)存,自己卻不得不拋出內(nèi)存溢出異常了。文章來源地址http://www.zghlxwxcb.cn/news/detail-721237.html

到了這里,關(guān)于06-JVM 性能調(diào)優(yōu)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • JVM性能調(diào)優(yōu)簡介

    JVM性能調(diào)優(yōu)簡介

    一、JVM內(nèi)存模型及垃圾收集算法 ? ? ?1.根據(jù)Java虛擬機規(guī)范,JVM將內(nèi)存劃分為: ? New(年輕代) Tenured(年老代) 永久代(Perm) ? 其中New和Tenured屬于堆內(nèi)存,堆內(nèi)存會從JVM啟動參數(shù)(-Xmx:3G)指定的內(nèi)存中分配,Perm不屬于堆內(nèi)存,有虛擬機直接分配,但可以通過-XX:PermSize

    2023年04月11日
    瀏覽(78)
  • 【JVM的相關(guān)參數(shù)和調(diào)優(yōu)】

    【JVM的相關(guān)參數(shù)和調(diào)優(yōu)】

    這類此參數(shù)在jdk的各個版本之間很少會變化,基本不改變 java -version,查看當前電腦上的jdk的版本信息 java -help,查看java命令的各種選項和參數(shù) java -showversion,相當于上述兩者結(jié)合 4. jps,查看后臺運行的 java 進程 Test 的進程 id 為 29636 5. jinfo,通過進程 id 查看正在運行的 jav

    2024年01月17日
    瀏覽(37)
  • 【jvm系列-13】jvm性能調(diào)優(yōu)篇---參數(shù)設(shè)置以及日志分析

    【jvm系列-13】jvm性能調(diào)優(yōu)篇---參數(shù)設(shè)置以及日志分析

    JVM系列整體欄目 內(nèi)容 鏈接地址 【一】初識虛擬機與java虛擬機 https://blog.csdn.net/zhenghuishengq/article/details/129544460 【二】jvm的類加載子系統(tǒng)以及jclasslib的基本使用 https://blog.csdn.net/zhenghuishengq/article/details/129610963 【三】運行時私有區(qū)域之虛擬機棧、程序計數(shù)器、本地方法棧 https

    2024年02月06日
    瀏覽(30)
  • 【Jvm】性能調(diào)優(yōu)(上)線上問題排查工具匯總

    【Jvm】性能調(diào)優(yōu)(上)線上問題排查工具匯總

    產(chǎn)品閉環(huán) 產(chǎn)品閉環(huán)是能夠讓 用戶主動迭代促進產(chǎn)品發(fā)展的方式 。例如一些內(nèi)容產(chǎn)品,比如 糗事百科 ,種子用戶 產(chǎn)出高質(zhì)量內(nèi)容 ,舉報與贊起到 篩選內(nèi)容 ,提高內(nèi)容質(zhì)量的作用, 內(nèi)容質(zhì)量的提升有助于吸引更多用戶 。 這就是產(chǎn)品閉環(huán), 產(chǎn)品給予用戶需求解決方法,用戶

    2024年02月20日
    瀏覽(30)
  • 【Jvm】性能調(diào)優(yōu)(下)線上問題排查思路匯總

    【Jvm】性能調(diào)優(yōu)(下)線上問題排查思路匯總

    【Jvm】性能調(diào)優(yōu)(上)線上問題排查工具匯總 【Jvm】性能調(diào)優(yōu)(中)Java中不得不了解的OOM Error 標準參數(shù)(-) :所有的JVM實現(xiàn)都必須實現(xiàn)該功能且向后兼容 非標準參數(shù)(-X) : 默認Jvm實現(xiàn)該功能 ,但是不保證所有jvm實現(xiàn)都滿足,且 不保證向后兼容 非穩(wěn)定參數(shù)(-XX) : 各

    2024年02月21日
    瀏覽(21)
  • JVM——StringTable面試案例+垃圾回收+性能調(diào)優(yōu)+直接內(nèi)存

    JVM——StringTable面試案例+垃圾回收+性能調(diào)優(yōu)+直接內(nèi)存

    JVM——引言+JVM內(nèi)存結(jié)構(gòu)_北嶺山腳鼠鼠的博客-CSDN博客 書接上回內(nèi)存結(jié)構(gòu)——方法區(qū)。 這里常量池是運行時常量池。 intern()方法? intern() 方法用于在運行時將字符串添加到內(nèi)部的字符串池stringtable中,并返回字符串池stringtable中的引用。 返回值 當調(diào)用 intern() 方法時,如果字符

    2024年02月12日
    瀏覽(21)
  • 性能調(diào)優(yōu)篇 二、Jvm監(jiān)控及診斷工具-命令行篇

    性能調(diào)優(yōu)篇 二、Jvm監(jiān)控及診斷工具-命令行篇

    性能診斷是軟件工程師在日程生活中需要經(jīng)常面對和解決的問題 Java作為最流行的編程語言之一,其應(yīng)用性能診斷一直收到業(yè)內(nèi)廣泛關(guān)注。造成Java應(yīng)用出現(xiàn)性能問題的因素非常多,例如線程控制,磁盤讀寫,數(shù)據(jù)庫訪問,網(wǎng)絡(luò)io,垃圾收集等。 想要定位這些問題,一款優(yōu)秀的

    2024年02月11日
    瀏覽(26)
  • JVM調(diào)優(yōu)篇:探索Java性能優(yōu)化的必備種子面試題

    JVM調(diào)優(yōu)篇:探索Java性能優(yōu)化的必備種子面試題

    首先面試官會詢問你在進行JVM調(diào)優(yōu)之前,是否了解JVM內(nèi)存模型的基礎(chǔ)知識。這是一個重要的入門問題。JVM內(nèi)存模型主要包括程序計數(shù)器、堆、本地方法棧、Java棧和方法區(qū)(1.7之后更改為元空間,并直接使用系統(tǒng)內(nèi)存)。 正常堆內(nèi)存又分為年輕代和老年代。在Java虛擬機中,年

    2024年02月15日
    瀏覽(28)
  • 【Jvm】性能調(diào)優(yōu)(拓展)Jprofiler如何監(jiān)控和解決死鎖、內(nèi)存泄露問題

    【Jvm】性能調(diào)優(yōu)(拓展)Jprofiler如何監(jiān)控和解決死鎖、內(nèi)存泄露問題

    Jprofilers是針對Java開發(fā)的 性能分析工具(免費試用10天) , 可以對Java程序的 內(nèi)存,CPU,線程,GC,鎖 等進行監(jiān)控和分析 , 本人IDEA版本是 2020.2.2 ,選擇的Jprofiler版本是 12.0 (早期的版本是純英文的, 12.0支持中文 ,安裝主要考慮是否與IDEA插件兼容即可) 進入Jprofiler官網(wǎng)下載 - Jprofiler 版本這

    2024年02月19日
    瀏覽(24)
  • Java線上故障排查(CPU、磁盤、內(nèi)存、網(wǎng)絡(luò)、GC)+JVM性能調(diào)優(yōu)監(jiān)控工具+JVM常用參數(shù)和命令

    Java線上故障排查(CPU、磁盤、內(nèi)存、網(wǎng)絡(luò)、GC)+JVM性能調(diào)優(yōu)監(jiān)控工具+JVM常用參數(shù)和命令

    根據(jù)服務(wù)部署和項目架構(gòu),從如下幾個方面排查: (1)運用服務(wù)器:排查內(nèi)存,cpu,請求數(shù)等; (2)文件圖片服務(wù)器:排查內(nèi)存,cpu,請求數(shù)等; (3)計時器服務(wù)器:排查內(nèi)存,cpu,請求數(shù)等; (4)redis服務(wù)器:排查內(nèi)存,cpu,連接數(shù)等; (5)db服務(wù)器:排查內(nèi)存,cpu,連接數(shù)

    2024年02月07日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包