日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux线程引起jvm崩溃,JVM宕机分析

發布時間:2023/12/10 linux 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux线程引起jvm崩溃,JVM宕机分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、可以引發JVM崩潰的常見緣由有:linux

線程阻塞數據庫

CPU 使用率太高服務器

JVM Crash工具

堆內存不足google

類裝載spa

Java虛擬機自身的Bug操作系統

JDK與服務器(CPU、內存、操做系統)的兼容性.net

內存溢出插件

2、日志文件

hs_err_pid.log,致命錯誤出現的時候,JVM生成了hs_err_pid.log這樣的文件,其中包含了虛擬機崩潰緣由的重要信息:

觸發致命錯誤的操做異常或者信號;

版本和配置信息;

觸發致命異常的線程詳細信息和線程棧;

當前運行的線程列表和它們的狀態;

堆的總括信息;

加載的本地庫;

命令行參數;

環境變量;

操做系統CPU的詳細信息。

JavaCore及HeapDump文件,Java程序運行時,有時會產生JavaCore及HeapDump文件,它通常發生于Java程序遇到致命問題的狀況下。有時致命問題發生后,Jvm不會死掉,還能繼續運行,但致命問題發生,Jvm進程會死掉,為了可以保留Java應用發生致命錯誤前的運行狀態,JVM在宕掉前產生兩個文件,分別為JavaCore及HeapDump文件。

JavaCore文件主要保存的是Java應用各線程在某一時刻的運行的位置,即JVM執行到哪個類、哪個方法、哪個行上。它是一個文本文件,打開后能夠看到每個線程的執行棧,以stack trace的顯示。經過對JavaCore文件的分析能夠獲得應用是否“卡”在某一點上,即在某一點運行的時間太長,例如數據庫查詢,長期得不到響應,最終致使系統崩潰等狀況。

HeapDump文件是一個二進制文件,它保存了某一時刻JVM堆中對象使用狀況,這種文件須要相應的工具進行分析。這類文件最重要的做用就是分析系統中是否存在內存溢出的狀況。

3、宕機分析

宕機的時候一定會產JavaCore及HeapDump文件,若是未宕機時,想查看Jvm中線程與內存狀況,那么在linux下可經過kill -3 進程號來手工產生這兩個文件來進行分析。

MAT

Eclipse Memory Analyzer是一個很是好用的分析工具,咱們能夠利用它的Eclipse 插件輕松實現查看對象樹、對象大小、生成報告,甚至自動化分析可能出現泄露的對象, 和其余插件的安裝很是相似,MAT 支持兩種安裝方式,一種是“單機版“的,也就是說用戶沒必要安裝 Eclipse IDE 環境,MAT 做為一個獨立的 Eclipse RCP 應用運行;另外一種是”集成版“的,也就是說 MAT 也能夠做為 Eclipse IDE 的一部分,和現有的開發平臺集成。

JavaCore文件的頭部有一個“Current Thread Details”標記,它記錄了JavaCore產生時系統運行的線程id,使用線程id在文件中查找線程的詳細信息,該信息中記載了線程運行哪一個類的時候形成的JavaCore。

HeapDump文件是指定時刻的Java堆棧的快照,是一種鏡像文件。MAT工具經過分析HeapDump文件,哪些對象占用了太多的堆棧空間,來發現致使內存泄露或者可能引發內存泄露的對象。

示例:

javacore文件分析:

由上圖可見,引發javacore的緣由是由于內存溢出,但其進程中的線程并未出現明細的異常,見

下圖的線程狀態分析。

引發javacore的線程以下所示:

該線程異常以下:

因而可知,由于內存不足致使了內存溢出,程序不存在異常,那么接下來經過分析dump來查看內存狀況,見下圖:

經過上述的dump文件的分析,咱們獲得內存的可能泄露點有兩個,都是占用了比較大的內存,經過分析內存泄露點來找到解決辦法。

總結

以上是生活随笔為你收集整理的linux线程引起jvm崩溃,JVM宕机分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。