亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

系統(tǒng)優(yōu)化怎么做-JVM優(yōu)化之開篇

gecko23 / 1135人閱讀

摘要:幾個死鎖場景兩個線程相互調(diào)用導致互相等待同步結束。線程為了檢測死鎖,它需要遞進地檢測所有被請求的鎖。思考題線程有哪些狀態(tài)這些線程大多處于什么樣的狀態(tài)分布我們可以稱系統(tǒng)運行是健康的。

前言

在上一期Tomcat優(yōu)化中,針對JVM相關主要參數(shù)做過一定說明,這一期主要介紹進行一些概念及經(jīng)驗。后面分章節(jié)去講述相關工具的基本使用。

優(yōu)化優(yōu)先級

整體來講,系統(tǒng)優(yōu)化應先優(yōu)化架構及代碼,來解決具體功能點效率問題。最后通過JVM監(jiān)控工具來發(fā)現(xiàn)一些隱藏較為深入的問題。

相關情形

內(nèi)存占用并不斷增加, 系統(tǒng)壓力大情況下Full GC頻繁,系統(tǒng)出現(xiàn)卡頓

線程出現(xiàn)大量等待及死鎖, CPU使用率過高, 系統(tǒng)響應慢

堆(heap)內(nèi)存不足或類加載導致JVM Crash,系統(tǒng)宕機

出現(xiàn)以上情況,就得使用工具分析JVM來確定問題
JVM內(nèi)存模型

JDK1.7及以下

JDK1.8下,PermGen替換成Vm MetaSpace
Heap域

全局被所有線程分享

存所有對象及集合對象

方法域

全局被所有線程分享

存所有類的結構定義包含屬性,方法及構造函數(shù)等

Thread1.N

本地私有棧,一個線程一個棧

保持著所有在Heap域的對象引用(4byte長度)

存儲本地局部變量的存儲(基礎數(shù)據(jù)類型),程序運行狀態(tài),方法返回值

內(nèi)存泄漏的分類

堆內(nèi)存泄漏 - 比較常見

持久代內(nèi)存泄漏

棧內(nèi)存泄漏

系統(tǒng)資源內(nèi)存泄漏 -比較常見

線程相關知識

JVM線程狀態(tài)遷移

線程狀態(tài)

初始化(New):初期創(chuàng)建,啟動后則進入可執(zhí)行狀態(tài)

可執(zhí)行狀態(tài)(Runnable): 只要獲取CPU時間,則開始執(zhí)行

運行狀態(tài)(Running): 正在使用CPU執(zhí)行

阻塞狀態(tài)(Bloked)

等待阻塞(wait)

同步阻塞(synchronized)

睡眠阻塞(sleep)

Join阻塞: 等待join子線程結束后,主線程才能執(zhí)行,將異步執(zhí)行的線程合并為同步的線程

結束狀態(tài): 線程執(zhí)行完畢或者異常退出

性能監(jiān)控關注點

系統(tǒng)線程總數(shù)

死鎖線程 需要優(yōu)先解決

線程Bloked總數(shù)數(shù)量

線程Bloked多的情況下,考慮對待處理數(shù)據(jù)進行分片,進行多通道,多線程處理提高系統(tǒng)性能
如果系統(tǒng)處理慢,但CPU占用一直很低,就需要梳理系統(tǒng)處理流程,串行處理該并行處理,并行處理流程提高并發(fā)來解決。

線程死鎖

當兩個或者多個線程嘗試獲取其他資源的鎖,而每個線程又陷入無限等待其他資源鎖的釋放(相互等待),除非一個用戶的進程被終止。

幾個死鎖場景

兩個線程相互調(diào)用Thread.join(), 導致互相等待同步結束。

慎用線程join操作

當兩個線程使用嵌套的同步塊時,一個線程占用了另一個線程的必需的鎖,互相等待時被阻塞,就有可能出現(xiàn)死鎖。 也可能多個線程形成環(huán)狀鎖,比如線程A等待線程B,線程B等待線程C,線程C等待線程A。線程A為了檢測死鎖,它需要遞進地檢測所有被B請求的鎖。從線程B所請求的鎖開始,線程A找到了線程C,發(fā)現(xiàn)線程C請求的鎖被線程A自己持有著。這是它就知道發(fā)生了死鎖。

MySql死鎖

MySql中兩個線程同時對兩條記錄做先讀后寫操作
避免死鎖

安全狀態(tài)

找到一個分配資源的序列能讓所有進程都順利完成

銀行家算法

采用預分配策略檢查分配完成時系統(tǒng)是否處在安全狀態(tài)
檢測死鎖

VisualVM(或其他工具)

監(jiān)控線程狀態(tài),如果出現(xiàn)死鎖得到相關代碼位置

死鎖定理化間資源分配圖

利用死鎖定理化間資源分配圖來分析死鎖的存在
參見以下資料:
https://www.coursera.org/lect...
總結

本章主要講了一些核心知識,主要為了讓大家了解系統(tǒng)優(yōu)化到底優(yōu)化和解決什么問題,什么是優(yōu)化的目標。后續(xù)章節(jié)會講到tomcat的JMX配置,VisualVM,Tprofile等工具的使用。

思考題

JVM線程有哪些狀態(tài),這些線程大多處于什么樣的狀態(tài)分布, 我們可以稱系統(tǒng)運行是健康的。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/76806.html

相關文章

  • 系統(tǒng)優(yōu)化怎么-開篇

    摘要:前言系統(tǒng)優(yōu)化是一個系統(tǒng)工程需要長期監(jiān)控長期及時解決的事情。主要從兩個方面來討論新系統(tǒng)上線前需要做些什么老系統(tǒng)優(yōu)化有哪些途徑新系統(tǒng)系統(tǒng)在設計時要考慮系統(tǒng)最大的等指標系統(tǒng)整個至少能支持業(yè)務最高峰來設計系統(tǒng)。 前言 系統(tǒng)優(yōu)化是一個系統(tǒng)工程, 需要長期監(jiān)控長期及時解決的事情。我一直在開發(fā)的一線,積累了一些經(jīng)驗,開這個專欄。歡迎大家一起討論,互相學習及進步。 主要從兩個方面來討論 新系統(tǒng)上線前...

    jsummer 評論0 收藏0
  • 【轉】成為Java頂尖程序員 ,看這10本書就夠了

    摘要:實戰(zhàn)高并發(fā)程序設計這本書是目前點評推薦比較多的書,其特色是案例小,好實踐代碼有場景,實用。想要學習多線程的朋友,這本書是我大力推薦的,我的個人博客里面二十多篇的多線程博文都是基于此書,并且在這本書的基礎上進行提煉和總結而寫出來的。 學習的最好途徑就是看書,這是我自己學習并且小有了一定的積累之后的第一體會。個人認為看書有兩點好處:showImg(/img/bVr5S5);  1.能出版出...

    DTeam 評論0 收藏0
  • 系統(tǒng)優(yōu)化怎么-Tomcat優(yōu)化

    摘要:運行模式分種模式一般使用模式效率低對系統(tǒng)配置有一些比較高的要求確認的運行模式配置文件關鍵配置最大線程數(shù)默認是最小活躍線程數(shù)默認是最大的等待隊列個數(shù),超過則請求拒絕默認值是,一般不改變。 前言 Tomcat作為Web應用的服務器,目前絕大多數(shù)公司都是用其作為應用服務器的,應用服務器的執(zhí)行效率會影響系統(tǒng)執(zhí)行,這里會講Tomcat怎樣進行配置能提高處理性能。另外必須提到對應的JVM參數(shù)的優(yōu)化...

    gghyoo 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<