dumpjava,dumpjava堆內存要多久

本文目錄一覽:

linux下java dump文件在哪兒

如果所使用的應用伺服器是tomact,dump文件默認在catalina.out日誌文件里;

如果不是則可以查看java環境變數設置的位置,也就知道在dump文件的位置了;

如果沒有生成dump文件或者是生成錯誤,請按照一下幾種方法來修復:

系統默認的core文件生成路徑是 /var/logs,但是 /var/logs 目錄並非系統自帶的,系統初始安裝默認自帶的是/var/log,最終導致該系統出現core dump後並沒能生成core文件,因此如何查詢和修改系統默認的core dump文件生產路徑呢?方法如下:

一. 查詢core dump文件路徑:

方法1:

# cat /proc/sys/kernel/core_pattern

方法2:

# /sbin/sysctl kernel.core_pattern

二. 修改core dump文件路徑:

方法1:臨時修改:修改/proc/sys/kernel/core_pattern文件,但/proc目錄本身是動態載入的,每次系統重啟都會重新載入,因此這種方法只能作為臨時修改。

/proc/sys/kernel/core_pattern

例:echo 『/var/log/%e.core.%p』 /proc/sys/kernel/core_pattern

方法2:永久修改:使用sysctl -w name=value命令。

例:/sbin/sysctl -w kernel.core_pattern=/var/log/%e.core.%p

Java 中怎麼獲取一份線程 dump 文件

當伺服器掛起,崩潰或者性能底下時,就需要抓取伺服器的線程堆棧(Thread Dump)用於後續的分析.

Thread dump提供了當前活動的線程的快照. 它提供了JVM中所有Java線程的棧跟蹤信息

有很多方式可用於獲取Thread Dump, 一些是操作系統特定的命令.

操作系統命令獲取ThreadDump:

Windows:

1. 轉向伺服器的標準輸出窗口並按下Control + Break組合鍵, 之後需要將線程堆棧複製到文件中

UNIX/ Linux

首先查找到伺服器的進程號(process id), 然後獲取堆棧.

1. ps –ef  | grep java

2. kill -3 pid

注意一定要謹慎, 一步不慎就可能讓伺服器進程被殺死!

JVM 自帶的工具獲取線程堆棧:

JDK自帶命令行工具獲取PID並做ThreadDump:

1.  jps

2.jstack pid

使用JVisualVM:

Threads 標籤頁 →ThreadDump按鈕

WebLogic 自帶的獲取 thread dump的工具:

1. webLogic.Admin 工具

a. 打開命令提示符, 通過運行DOMAIN_HOME/bin/setDomain.env設置相關類路徑

b. 執行下面的命令

java weblogic.Admin -url t3://localhost:7001 -username weblogic -password weblogic1 THREAD_DUMP

注意: Thread Dump 會列印到標準輸出, 如nohup日誌或者進程窗口.

2. 使用 Admin Console

a. 登錄 Admin Console , 點擊對應的伺服器

b. 點擊Server à Monitoring àThreads

c. 點擊: Dump Thread Stack 按鈕

3. 使用WLST (WebLogic Scripting Tool)

connect(『weblogic』,’weblogic1』,』t3://localhost:7001』)

cd(『Servers』)

cd(『AdminServer』)

threadDump()

disconnect()

exit()

注意: 線程堆棧將會保存在運行wlst的當前目錄下.

4. 使用utils.ThreadDumper

用法:

C:\bea\wlserver_10.3\server\libjava -cp weblogic.jar utils.ThreadDumper

Broadcast Thread dumps disabled: must specify weblogic.debug.dumpThreadAddr and

weblogic.debug.dumpThreadPort

Exception in thread “main” java.lang.IllegalArgumentException: Port out of range

:-1

at java.net.DatagramPacket.setPort(Unknown Source)

at java.net.DatagramPacket.init(Unknown Source)

at java.net.DatagramPacket.init(Unknown Source)

at utils.ThreadDumper.sendDumpMsg(ThreadDumper.java:124)

at utils.ThreadDumper.main(ThreadDumper.java:145)

5. 如果伺服器是作為Windows服務的方式運行, 請運行下列命令:

WL_HOME\bin\beasvc -dump -svcname:service-name

其它一些獲取Thread Dump的工具有jrcmd, jrmc(JRockit VM自帶) ,Samurai, JProfiler等, 還可通過JMX編程的方式獲取, 如JDK自帶示例代碼:

$JAVA_HOME\demo\management\FullThreadDump

java dump文件怎麼生成

1 choose one cluster member, set the following before this server start:

在was啟動前設置下面環境變數(可以加在啟動腳本中)

export IBM_HEAPDUMP=true

export IBM_HEAP_DUMP=true

export IBM_HEAPDUMP_OUTOFMEMORY=true

export IBM_HEAPDUMPDIR=directory path

2 please use set command to make sure you do not have DISABLE_JAVADUMP parameter

then start this cluster member.

用set命令檢查參數設置,確保沒有設置DISABLE_JAVADUMP,然後啟動server

3 when you find free memory 50% when no heavy access, please run kill -3 pid

執行kill -3 pid命令可以生成javacore文件和heapdump文件(pid為was java進程的id號,可以用ps -ef|grep java 查到),可以多執行幾次,按照下面操作進行

ps -ef psef1.txt

ps aux psaux1.txt

vmstat 5 10 vmstat.txt

kill -3 app server id

wait for 2 mins

kill -3 app server id

wait for 2 mins

kill -3 app server id

netstat -an netstat2.txt

ps -ef psef2.txt

ps aux psaux2.txt

將上面產生的 txt 文件和/usr/WebSphere/AppServer/javacore*文件和heapdump文件拷貝到本地,然後刪除這些文件,因為這些文件會佔用較大的文件系統空間。

將/usr/WebSphere/AppServer/logs/wlmserver1(或2)目錄下當天產生的日誌拷貝出來

如何生成java dump文件

java dump heap 是分配給實例類和數組對象運行數據區,所有java線程在運行期間共享heap中的數據。Java heap dump相當於java應用在運行的時候在某個時間點上打了個快照(snapshot)。

有java dump文件生成的方式如下:

1.使用$JAVA_HOME/bin/jmap -dump來觸發,eg:jmap -dump:format=b,file=/home/longhao/heamdump.out

2.使用$JAVA_HOME/bin/jcosole中的MBean,到MBeancom.sun.managementHotSpotDiagnostic操作dumpHeap中,點擊 dumpHeap按鈕。生成的dump文件在java應用的根目錄下面。

3.在應用啟動時配置相關的參數 -XX:+HeapDumpOnOutOfMemoryError,當應用拋出OutOfMemoryError時生成dump文件。

4.使用hprof。啟動虛擬機加入-Xrunhprof:head=site,會生成java.hprof.txt文件。該配置會導致jvm運行非常的慢,不適合生產環境。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/256436.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:40
下一篇 2024-12-15 12:40

相關推薦

  • Python創建分配內存的方法

    在python中,我們常常需要創建並分配內存來存儲數據。不同的類型和數據結構可能需要不同的方法來分配內存。本文將從多個方面介紹Python創建分配內存的方法,包括列表、元組、字典、…

    編程 2025-04-29
  • Python變數在內存中的存儲

    該文章將從多個方面對Python變數在內存中的存儲進行詳細闡述,包括變數的聲明和賦值、變數的引用和指向、內存地址的變化、內存管理機制等。 一、聲明和賦值 在Python中,變數聲明…

    編程 2025-04-29
  • Python計算內存佔用

    Python是一種高級的、解釋性的、面向對象的、動態的程序語言,因其易於學習、易於閱讀、可移植性好等優點,越來越受到開發者的青睞。當我們編寫Python代碼時,可能經常需要計算程序…

    編程 2025-04-28
  • 使用Go-Redis獲取Redis集群內存使用率

    本文旨在介紹如何使用Go-Redis獲取Redis集群的內存使用率。 一、Go-Redis簡介 Go-Redis是一個用於連接Redis伺服器的Golang客戶端。它支持Redis…

    編程 2025-04-28
  • Python內置函數——查看對象內存

    本文將介紹Python內置函數中,在開發中查看對象內存的相關函數。 一、id()函數 id()函數是Python內置函數,用於返回對象的唯一標識符,也就是對象在內存中的地址。 nu…

    編程 2025-04-27
  • Python進程池共享內存用法介紹

    本文將從多個方面詳細闡述Python進程池共享內存的相關知識,包括如何使用進程池、進程池的實現原理、進程池中的共享內存管理等。本文內容將涵蓋: 一、進程池的使用 進程池是一種有效的…

    編程 2025-04-27
  • 深入解析Redis內存淘汰策略

    Redis是一個高性能鍵值資料庫,由於其快速、穩定和易於使用,它已經成為很多應用程序中不可或缺的一部分。在使用Redis時,我們需要考慮內存管理問題。Redis內存淘汰策略是如何工…

    編程 2025-04-25
  • 解決SQL Server內存佔用高問題的方法

    一、關閉不必要的服務 在SQL Server安裝時,默認開啟了許多服務,包括SQL Server Browser,SQL Server Agent等。關閉不必要的服務可以釋放內存資…

    編程 2025-04-25
  • c++內存模型的詳細闡述

    一、c 內存模型有哪些 c語言的內存模型主要包括4個方面:數據類型在內存中的分布、存儲類型、指針、內存分配和釋放。 數據類型在內存中的分布,首先是指針類型,在32位系統中佔4個位元組…

    編程 2025-04-23
  • 深入gperftools:性能分析和內存分析工具

    一、gperftools安裝 gperftools是一個用於分析CPU使用率、內存分配和性能分析的工具。在Ubuntu系統上安裝gperftools,我們需要在終端中鍵入: $ s…

    編程 2025-04-23

發表回復

登錄後才能評論