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

用jprofiler來(lái)分析 jvm 堆 內(nèi)存泄露,fullgc

這篇具有很好參考價(jià)值的文章主要介紹了用jprofiler來(lái)分析 jvm 堆 內(nèi)存泄露,fullgc。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

jvm 命令和工具_(dá)個(gè)人渣記錄僅為自己搜索用的博客-CSDN博客

?堆太大?

? 方法1: 重新設(shè)置堆后,重啟,復(fù)現(xiàn).

? 方法2:? 切割

split -b 1M heap.bin smallfile
scp smallfile* username@mac-host:/Users/username/
cat smallfile* > heap.bin

?官網(wǎng)文檔

JProfiler Help - HPROF snapshots

heap walker教學(xué):

用jprofile查看hprof文件_hprof jprofile_java老張的博客-CSDN博客

通識(shí)教學(xué):

JVM監(jiān)控及診斷工具GUI篇之JProfiler_每天都要進(jìn)步一點(diǎn)點(diǎn)的博客-CSDN博客

問(wèn)題: 接口調(diào)用超時(shí)逐步增加

分析 - > 發(fā)現(xiàn)進(jìn)程 cpu占比很高 ->?進(jìn)一步分析是垃圾回收線程一直在工作.?

-> 在看堆 ,堆占滿了.

1. 降低jvm 參數(shù),最大內(nèi)存數(shù), 復(fù)現(xiàn)

2. jmap dump

jmap -dump:live,format=b,file=<filename> <PID>

3. 在JProfiler打開.

用jprofiler來(lái)分析 jvm 堆 內(nèi)存泄露,fullgc

4 找到最大size (retained size )的對(duì)象. 一層一層展開 有 %比

用jprofiler來(lái)分析 jvm 堆 內(nèi)存泄露,fullgc

?遇到"transitive reference" , 鏈接分析被中斷了. 直接右鍵

用jprofiler來(lái)分析 jvm 堆 內(nèi)存泄露,fullgc

選擇 "incoming references"?

用jprofiler來(lái)分析 jvm 堆 內(nèi)存泄露,fullgc

?直接定位到源頭, dev環(huán)境的agent 泄露了.? 本地環(huán)境上沒(méi)有這個(gè)agent 看代碼分析肯定也分析不出來(lái).

用jprofiler來(lái)分析 jvm 堆 內(nèi)存泄露,fullgc

? ? 問(wèn)題 "transitive reference" 是什么, 如何展開?
在Java語(yǔ)言中,一個(gè)對(duì)象可能會(huì)引用其他對(duì)象,這些被引用的對(duì)象也可能會(huì)引用其他對(duì)象,這樣就形成了一個(gè)對(duì)象的引用鏈。如果在這個(gè)引用鏈中,存在某個(gè)對(duì)象A被其他對(duì)象引用,并且對(duì)象A也直接或間接引用了其他對(duì)象,那么這些被間接引用的對(duì)象就稱為對(duì)象A的傳遞引用(transitive reference)。

在JVM內(nèi)存管理中,如果一個(gè)對(duì)象被其他對(duì)象引用,那么這個(gè)對(duì)象就不能被垃圾回收。如果這個(gè)對(duì)象又間接引用了其他對(duì)象,那么這些間接引用的對(duì)象也不能被垃圾回收。如果這種引用關(guān)系形成了一個(gè)傳遞引用鏈,那么整個(gè)鏈上的所有對(duì)象都不能被垃圾回收,即使它們已經(jīng)變成了不可達(dá)對(duì)象。

5. 選擇最大size的類 . 剛好對(duì)象有重復(fù).

?用jprofiler來(lái)分析 jvm 堆 內(nèi)存泄露,fullgc

在 JProfiler 中,"Use Selected Object"、"Use Selected java.lang.Class Object" 和 "Use Retained Objects" 是三個(gè)不同的選項(xiàng),用于在內(nèi)存分析時(shí)選擇對(duì)象。

  1. "Use Selected Object" 選項(xiàng)允許你選擇一個(gè)對(duì)象,然后查看該對(duì)象的引用關(guān)系、內(nèi)存使用情況和方法調(diào)用鏈等信息。該選項(xiàng)適用于分析單個(gè)對(duì)象的內(nèi)存使用情況。

  2. "Use Selected java.lang.Class Object" 選項(xiàng)允許你選擇一個(gè)類對(duì)象,然后查看該類的內(nèi)存使用情況、實(shí)例數(shù)量和方法調(diào)用鏈等信息。該選項(xiàng)適用于分析某個(gè)類的內(nèi)存使用情況。

  3. "Use Retained Objects" 選項(xiàng)允許你選擇一個(gè)對(duì)象,然后查看該對(duì)象及其引用的其他對(duì)象的內(nèi)存使用情況。該選項(xiàng)適用于分析對(duì)象之間的引用關(guān)系和內(nèi)存泄漏問(wèn)題。

總的來(lái)說(shuō),這三個(gè)選項(xiàng)的區(qū)別在于它們選擇的對(duì)象不同,從而適用于不同的內(nèi)存分析場(chǎng)景。"Use Selected Object" 選項(xiàng)適用于分析單個(gè)對(duì)象的內(nèi)存使用情況,"Use Selected java.lang.Class Object" 選項(xiàng)適用于分析某個(gè)類的內(nèi)存使用情況,"Use Retained Objects" 選項(xiàng)適用于分析對(duì)象之間的引用關(guān)系和內(nèi)存泄漏問(wèn)題。

5.2?湊巧方法: 直接從String 類?著手,排序.

用jprofiler來(lái)分析 jvm 堆 內(nèi)存泄露,fullgc

用jprofiler來(lái)分析 jvm 堆 內(nèi)存泄露,fullgc

?附錄

retained size等概念

shallow size

? ?Shallow size是指一個(gè)對(duì)象本身占用的內(nèi)存大小,

retained size

? ?而retained size則是指一個(gè)對(duì)象及其引用對(duì)象占用的總內(nèi)存大小。簡(jiǎn)單來(lái)說(shuō),shallow size是指對(duì)象自身占用的內(nèi)存大小,而retained size則是指對(duì)象及其引用的其他對(duì)象占用的總內(nèi)存大小。

deep size?

? deep size是指一個(gè)對(duì)象及其引用對(duì)象占用的總內(nèi)存大小,但只計(jì)算直接引用的對(duì)象。例如,一個(gè)對(duì)象A直接引用B和C兩個(gè)對(duì)象,B對(duì)象又引用D和E兩個(gè)對(duì)象,那么A對(duì)象的deep size就是A、B和C這三個(gè)對(duì)象的總內(nèi)存大小。

因此,Retained size和Deep size的區(qū)別在于計(jì)算引用對(duì)象的深度不同,Retained size會(huì)計(jì)算間接引用的對(duì)象,而Deep size只計(jì)算直接引用的對(duì)象。

問(wèn)題: " Cannot View Allocations from Heapdump in JProfiler"


HPROF snapshots do not contain any information where objects were allocated. You have to use the JProfiler profiling agent and record allocation data before taking a heap snapshot in order to use this functionality.

問(wèn)題 "transitive reference" 是什么, 如何展開?


在Java語(yǔ)言中,一個(gè)對(duì)象可能會(huì)引用其他對(duì)象,這些被引用的對(duì)象也可能會(huì)引用其他對(duì)象,這樣就形成了一個(gè)對(duì)象的引用鏈。如果在這個(gè)引用鏈中,存在某個(gè)對(duì)象A被其他對(duì)象引用,并且對(duì)象A也直接或間接引用了其他對(duì)象,那么這些被間接引用的對(duì)象就稱為對(duì)象A的傳遞引用(transitive reference)。

在JVM內(nèi)存管理中,如果一個(gè)對(duì)象被其他對(duì)象引用,那么這個(gè)對(duì)象就不能被垃圾回收。如果這個(gè)對(duì)象又間接引用了其他對(duì)象,那么這些間接引用的對(duì)象也不能被垃圾回收。如果這種引用關(guān)系形成了一個(gè)傳遞引用鏈,那么整個(gè)鏈上的所有對(duì)象都不能被垃圾回收,即使它們已經(jīng)變成了不可達(dá)對(duì)象。
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-474605.html

到了這里,關(guān)于用jprofiler來(lái)分析 jvm 堆 內(nèi)存泄露,fullgc的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【JVM】Java內(nèi)存泄露的排查思路?

    【JVM】Java內(nèi)存泄露的排查思路?

    Java內(nèi)存泄露(Memory Leak)是指在Java程序中,無(wú)用的對(duì)象占用了 堆內(nèi)存 ,但無(wú)法被垃圾回收器回收釋放,從而導(dǎo)致可用內(nèi)存逐漸減少,最終可能導(dǎo)致內(nèi)存耗盡或性能下降的問(wèn)題。 說(shuō)明一般對(duì)于內(nèi)存泄漏。都是針對(duì) 堆 的。 程序一般出現(xiàn)內(nèi)存泄漏會(huì)有 兩個(gè)狀態(tài) 一是一啟動(dòng)導(dǎo)致

    2024年02月13日
    瀏覽(24)
  • 【JVM 監(jiān)控工具】性能診斷--JProfiler的使用

    【JVM 監(jiān)控工具】性能診斷--JProfiler的使用

    性能診斷是軟件工程師在日常工作中需要經(jīng)常面對(duì)和解決的問(wèn)題,在用戶體驗(yàn)至上的今天,解決好應(yīng)用的性能問(wèn)題能帶來(lái)非常大的收益。Java 作為最流行的編程語(yǔ)言之一,其應(yīng)用性能診斷一直受到業(yè)界廣泛關(guān)注??赡茉斐?Java 應(yīng)用出現(xiàn)性能問(wèn)題的因素非常多,例如線程控制、

    2024年02月08日
    瀏覽(20)
  • 什么時(shí)候會(huì)觸發(fā)FullGC?描述一下JVM加載class文件的原理機(jī)制?

    什么時(shí)候會(huì)觸發(fā) FullGC? 除直接調(diào)用 System.gc 外,觸發(fā) Full GC 執(zhí)行的情況有如下四種。 1. 舊生代空間不足 舊生代空間只有 在新生代對(duì)象轉(zhuǎn)入及創(chuàng)建為大對(duì)象、大數(shù)組時(shí)才會(huì)出現(xiàn)不足的現(xiàn)象,當(dāng)執(zhí)行 Full GC 后空間仍然不 足,則拋出如下錯(cuò)誤: java.lang.OutOfMemoryError: Java heap spac

    2024年02月20日
    瀏覽(23)
  • Go坑:time.After可能導(dǎo)致的內(nèi)存泄露問(wèn)題分析

    Go坑:time.After可能導(dǎo)致的內(nèi)存泄露問(wèn)題分析

    Go 中 time.After 可能導(dǎo)致的內(nèi)存泄露 go v1.20.4 time 包中有 3 個(gè)比較常用的定時(shí)函數(shù):NewTicker,NewTimer 和 time.After: NewTimer : 表示在一段時(shí)間后才執(zhí)行,默認(rèn)情況下執(zhí)行一次。如果想再次執(zhí)行,需要調(diào)用 time.Reset() 方法,這時(shí)類似于 NewTicker 定時(shí)器了??梢哉{(diào)用 stop 方法停止執(zhí)行。

    2024年02月02日
    瀏覽(22)
  • 【jvm系列-09】垃圾回收底層原理和算法以及JProfiler的基本使用

    【jvm系列-09】垃圾回收底層原理和算法以及JProfiler的基本使用

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

    2023年04月22日
    瀏覽(29)
  • jstat命令查看jvm內(nèi)存情況及GC內(nèi)存變化

    jstat命令查看jvm內(nèi)存情況及GC內(nèi)存變化

    jstat [Options] pid [interval] [count] 參數(shù)說(shuō)明: Options,選項(xiàng),一般使用 -gc、-gccapacity查看gc情況 pid,VM的進(jìn)程號(hào),即當(dāng)前運(yùn)行的java進(jìn)程號(hào) interval,間隔時(shí)間(按該時(shí)間頻率自動(dòng)刷新當(dāng)前內(nèi)存情況),單位毫秒 count,打印次數(shù),如果缺省則打印無(wú)數(shù)次 查看當(dāng)前jvm內(nèi)存情況 jstat -gc 12675

    2024年02月01日
    瀏覽(16)
  • Java jvm 內(nèi)存溢出分析

    Java jvm 內(nèi)存溢出分析

    我們經(jīng)常用visualVm監(jiān)控Jvm的內(nèi)存,cpu,線程的使用情況,通??梢愿鶕?jù)內(nèi)存不斷增長(zhǎng)來(lái)判斷內(nèi)存是否存在不釋放。但是我們不可能時(shí)時(shí)盯著去看,這里涉及jvm堆內(nèi)存配置,堆內(nèi)存參數(shù)配置和調(diào)優(yōu)會(huì)在其他章節(jié)編寫。 如果真是內(nèi)存溢出了,線上出現(xiàn)的我們需要配置JVm內(nèi)存溢出,

    2024年02月09日
    瀏覽(28)
  • 如何分析 JVM  內(nèi)存瓶頸淺談

    如何分析 JVM 內(nèi)存瓶頸淺談

    當(dāng)操作系統(tǒng)內(nèi)存出現(xiàn)瓶頸時(shí),我們便會(huì)重點(diǎn)排查那個(gè)應(yīng)用占用內(nèi)存過(guò)大。對(duì)于更深一步分析內(nèi)存的使用,就進(jìn)一步去了解內(nèi)存結(jié)構(gòu),應(yīng)用程序使用情況,以及內(nèi)存如何分配、如何回收,這樣你才能更好地確定內(nèi)存的問(wèn)題。 ? JVM(Java虛擬機(jī))內(nèi)存分配是指Java程序運(yùn)行時(shí),JVM對(duì)

    2024年02月12日
    瀏覽(18)
  • jvm內(nèi)存溢出排查(使用idea自帶的內(nèi)存泄漏分析工具)

    jvm內(nèi)存溢出排查(使用idea自帶的內(nèi)存泄漏分析工具)

    想分析堆內(nèi)存溢出,一定在運(yùn)行jar包時(shí)就寫上參數(shù) -XX:+HeapDumpOnOutOfMemoryError ,可以看我之前關(guān)于如何運(yùn)行jar包的文章。若你沒(méi)有寫。可以寫上參數(shù),重啟你的項(xiàng)目,等你的項(xiàng)目發(fā)生下一次堆內(nèi)存溢出異常,在運(yùn)行的同級(jí)文件夾,將產(chǎn)生類似這樣一個(gè)文件 java_pid74935.hprof ,若你

    2024年02月09日
    瀏覽(30)
  • flink源碼分析-獲取JVM最大堆內(nèi)存

    flink版本: flink-1.11.2 代碼位置:?org.apache.flink.runtime.util.EnvironmentInformation#getMaxJvmHeapMemory 如果設(shè)置了-Xmx參數(shù),就返回這個(gè)參數(shù),如果沒(méi)設(shè)置就返回機(jī)器物理內(nèi)存的1/4.? 這里主要看各個(gè)機(jī)器內(nèi)存的獲取方法。 進(jìn)入getSizeOfPhysicalMemory()方法,里面有獲取各種操作系統(tǒng)物理內(nèi)存的方法

    2024年02月15日
    瀏覽(15)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包