JVM調優之jstack找出最耗cpu的執行緒並定位程式碼
第一步:先找出java的程序Id(PID) 假設java應用名稱是zcg_commodity
ps -ef|grep zcg_commodity
得到程序Id為32464
第二步:找出該程序內最消耗CPU的執行緒
top -Hp pid
輸入top -Hp 32464
TIME列就是各個java執行緒耗費的CPU的時間,比如圖中是執行緒ID的為2012的執行緒,
通過 printf “%x\n” 2012
得到2012的十六進位制為 7dc
第三步:
一般會進到jdk的bin目錄下,root許可權執行
jstack 32464|grep 7dc
PollIntervalRetrySchedulerThread” prio=10 tid=0x00007f950043e000 nid=0x54ee in Object.wait()
定位問題所在
之前有遇到前幾個消耗CPU的執行緒都是GC的,那可能是短時間記憶體洩露嚴重,導致GC回收不過來,導致CPU短時間飆升
這種情況用jmap -histo:live 32464 |head -20,檢視哪個物件生成異常,就可以定位問題大方向
第四步:
查程式碼
相關推薦
JVM調優之jstack找出最耗cpu的線程並定位代碼
grep 輪詢 tin jstack stack ads OS 分享 bject jstack可以定位到線程堆棧,根據堆棧信息我們可以定位到具體代碼,所以它在JVM性能調優中使用得非常多。下面我們來一個實例找出某個Java進程中最耗費CPU的Java線程並定位堆棧信息,用到
【轉】【JVM】JVM調優之jstack找出最耗cpu的執行緒並定位程式碼
jstack可以定位到執行緒堆疊,根據堆疊資訊我們可以定位到具體程式碼,所以它在JVM效能調優中使用得非常多。下面我們來一個例項找出某個Java程序中最耗費CPU的Java執行緒並定位堆疊資訊,用到的命令有ps、top、printf、jstack、grep。 第一步先找
JVM調優之jstack找出最耗cpu的執行緒並定位程式碼
第一步:先找出java的程序Id(PID) 假設java應用名稱是zcg_commodity ps -ef|grep zcg_commodity 得到程序Id為32464 第二步:找出該程序內最消耗CPU的執行緒 top -Hp pid 輸入top
JVM調優(二)——Linux下監控java執行緒
Linux環境下,當發現java程序佔用CPU資源非常高,且又要想更進一步查出哪一個java執行緒佔用了CPU資源時該如何做呢? 一、採用命令列形式檢視執行緒,最終用dump進行文字分析 1、top命令既可以看程序,又可以看執行緒 1、top命令找出佔用資源厲害
JVM調優之監控工具
protect 操作 虛擬 遠程調試 -xms thread 行號 垃圾 time javac -verbose 類名.java java -verbose 類名 javap -c 類名 javap -verbose 類名JAVAP -HELP用法: javap其中, 可能
JVM調優之Tomcat啟動參數配置及詳解
.bat xms 是否 大堆 pts 啟動參數 spa java permgen 開發項目中會遇到Tomcat內存溢出(java.lang.OutOfMemoryError: PermGen space)的問題,通過查找資料找到是通過設置
JVM調優總結(目前看過最全的)
Xms 是指設定程式啟動時佔用記憶體大小。一般來講,大點,程式會啟動的快一點,但是也可能會導致機器暫時間變慢。 Xmx 是指設定程式執行期間最大可佔用的記憶體大小。如果程式執行需要佔用更多的記憶體,超出了這個設定值,就會丟擲OutOfMemory異常。 Xss 是指設定每個執行緒的堆疊大小。
JVM調優之常用引數配置
一、堆設定 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:設定年輕代大小 -XX:NewRatio=n:設定年輕代和年老代的比值。如:為3,表示年輕代與年老代比值為1:3,年輕代佔整個年輕代年老代和的1/4 -XX:SurvivorRatio=n:年輕代中Eden區與
JVM調優之Tomcat啟動引數配置及詳解
開發專案中會遇到Tomcat記憶體溢位(java.lang.OutOfMemoryError: PermGen space)的問題,通過查詢資料找到是通過設定Tomcat 啟動堆空間大小、年輕代大小、每個執行緒大小引數進行調優的,具體如下: 一、在Tomcat 啟動指令碼(
sql server 效能調優之 邏輯記憶體消耗最大資源分析1 (自sqlserver服務啟動以後)
原文: sql server 效能調優之 邏輯記憶體消耗最大資源分析1 (自sqlserver服務啟動以後) 一.概述 IO 記憶體是sql server最重要的資源,資料從磁碟載入到記憶體,再從記憶體中快取,輸出到應用端,在sql server 記憶體初探中有介紹。在明白了sqlserver記憶體原
spark JVM調優之原理概述以及降低cache操作的記憶體佔比
每一次放物件的時候,都是放入eden區域,和其中一個survivor區域;另外一個survivor區域是空閒的。 當eden區域和一個survivor區域放滿了以後(spark執行過程中,產生的物件實在太多了),就會觸發minor gc,小型垃圾回收。把不再使用的物件,從記憶體中清空,給後面新建立
JVM調優——之CMS 常見引數解析
最近在學習使用CMS這個GC,這裡記錄下常用的引數。1. UseCMSCompactAtFullCollection 與 CMSFullGCsBeforeCompaction 有一點需要注意的是:CMS併發GC不是“full GC”。HotSpot VM裡對conc
JVM調優之探索CMS和G1的實體記憶體歸還機制
前言: 公司有一個資產統計系統,使用頻率很低,但是要求在使用時查詢速度快,因此想到做一些快取放在記憶體中,在長時間沒有使用,持久化到磁碟中,並對垃圾進行回收,歸還實體記憶體給作業系統,從而節省寶貴資源給其它業務系統。當我做好快取時,卻發現了一個棘手的問題,通過程式釋放資源並通知GC回收資源後,堆記憶體的已用記
JVM調優之經驗
在生產系統中,高吞吐和低延遲一直都是JVM調優的最終目標,但這兩者恰恰又是相悖的,魚和熊掌不可兼得,所以在調優之前要清楚舍誰而取誰
JVM調優之垃圾定位、垃圾回收演算法、垃圾處理器對比
談垃圾回收器之前,要先講講垃圾回收演算法,以及JVM對垃圾的認定策略,JVM垃圾回收器是垃圾回收演算法的具體實現,瞭解了前面的前置知識,有利於對垃圾回收器的理解。 ## 什麼是垃圾? 垃圾,主要是指堆上的物件,那麼如何確定這些物件是可以被回收的呢? 大概思路就是,如果一個物件永遠不可能被訪問到,那麼
Spark學習之路 (十二)SparkCore的調優之資源調優JVM的基本架構
程序員 存儲 src ron 指示器 引用 double strong 功能 一、JVM的結構圖 1.1 Java內存結構 JVM內存結構主要有三大塊:堆內存、方法區和棧。 堆內存是JVM中最大的一塊由年輕代和老年代組成,而年輕代內存又被分成三部分,Eden空間、
Spark學習之路 (十四)SparkCore的調優之資源調優JVM的GC垃圾收集器
當前 復制 event 只需要 引用 應用 之前 相互 分享 一、概述 垃圾收集 Garbage Collection 通常被稱為“GC”,它誕生於1960年 MIT 的 Lisp 語言,經過半個多世紀,目前已經十分成熟了。 jvm 中,程序計數
JVM調優工具的使用(jps,jstat,jstack,jmap,jhat)
lvm DG odi jvm調優 native boot stopped bject Oz JDK本身提供了很豐富的性能監控工具,除了集成式的visualVM和jConsole外,還有jstat,jstack,jps,jmap,jhat小工具,這些都是性能調優的常用工具我們
Spark調優之JVM調優
今天給大家分享Spark調優相關的JVM調優,這個調優方法在開發中也很常見,他主要分為兩種,一種是降低cache操作的記憶體佔比,一種是調節executor堆外記憶體和降低連線等待時長。 在此之前,我們先來了解一下JVM的堆記憶體。 堆記憶體存放我們建立的一些物件,有老年代和年輕代。理想
Java學習路線指南之JVM調優並解決OutOfMemoryError,StackOverflowError
JVM 調優,首先應從記憶體開始,尤其是在真正的的web服務部署的時候。因為真正的web服務會比開發的時候花費更多的記憶體,用來處理多使用者併發的情況。本人多次吃過這方面的虧,所以整理一下,希望能給別人以幫助。 &nb