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/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

发表回复

登录后才能评论