返回顶部
首页 > 资讯 > 精选 >JavaCore/HeapDump文件及其分析方法是怎么样的
  • 828
分享到

JavaCore/HeapDump文件及其分析方法是怎么样的

2023-06-17 09:06:39 828人浏览 薄情痞子
摘要

今天就跟大家聊聊有关JavaCore/HeapDump文件及其分析方法是怎么样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。产生时间Java程序运行时,有时会产生JavaCore及

今天就跟大家聊聊有关JavaCore/HeapDump文件及其分析方法是怎么样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

产生时间

Java程序运行时,有时会产生JavaCore及HeapDump文件,它一般发生于Java程序遇到致命问题的情况下。

有时致命问题发生后,Java应用不会死掉,还能继续运行;

但有时致命问题发生,Java进程会死掉;

为了能够保留Java应用发生致命错误前的运行状态,JVM在死掉前产生两个文件,分别为JavaCore及HeapDump文件。

有何区别

JavaCore是关于CPU的,而HeapDump文件是关于内存的。

JavaCore文件主要保存的是Java应用各线程在某一时刻的运行的位置,即JVM执行到哪一个类、哪一个方法、哪一个行上。它是一个文本文件,打开后可以看到每一个线程的执行栈,以stack trace的显示。通过对JavaCore文件的分析可以得到应用是否“卡”在某一点上,即在某一点运行的时间太长,例如数据库查询,长期得不到响应,最终导致系统崩溃等情况。

HeapDump文件是一个二进制文件,它保存了某一时刻JVM堆中对象使用情况,这种文件需要相应的工具进行分析,如IBM Heap Analyzer这类工具。这类文件最重要的作用就是分析系统中是否存在内存溢出的情况。

怎么生成

这两个文件可以用手工的方式生成,当我们会遇到系统变慢或无响应的情况,这时就以采用手工的方式生成JavaCore及HeapDump文件。

在Unix/linux上,产生这两个文件的方法如下:

# ps -ef | grep java  user 4616 4582 0 17:30 pts/0 00:00:00 grep java  root 5580 1 0 Oct27 ? 00:02:27 /usr/bin/java -server -XX:PermSize=64M -XX:MaxPermSize=128m -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/usr/local/Tomcat8090/conf/logging.properties -Djava.endorsed.dirs=/usr/local/tomcat8090/endorsed -classpath :/usr/local/tomcat8090/bin/bootstrap.jar -Dcatalina.base=/usr/local/tomcat8090 -Dcatalina.home=/usr/local/tomcat8090 -Djava.io.tmpdir=/usr/local/tomcat8090/temp org.apache.catalina.startup.Bootstrap start  # kill -3 5580

首先,找出Java进程id ,然后再执行‘kill -3 进程号’的操作,等文件生成后再做一次同样的操作,再产生一组文件。

如何分析

JavaCore文件

两组文件在分析JavaCore时特别有效,因为它可以看出在先后两个时间点上,线程执行的位置,如果发现先后两组数据中同一线程都执行在同一位置,则说明此处可能有问题,因为程序运行是极快的,如果两次均在某一点上,说明这一点耗时是很大的,通过对这两个文件进行分析,查出原因,进而解决问题。

JavaCore文件的头部有一个“Current Thread Details”标记,它记录了JavaCore产生时系统运行的线程id,使用线程id在文件中查找线程的详细信息,该信息中记载了线程运行哪个类的时候造成的JavaCore。

NULL ------------------------------------------------------------------------  0SECTION TITLE   subcomponent dump routine  NULL ===============================  1TISIGINFOOUTOFMEMORY received  1TIDATETIME Date: 2011/12/07 at 15:59:42  1TIFILENAME Javacore filename:/usr/WEBSphere/AppServer/profiles/WCSProdnode2/javacore19202086.1323298782.txt  NULL ------------------------------------------------------------------------  0SECTION XHPI subcomponent dump routine  NULL   ==============================  1XHTIME Wed Dec 7 15:59:42 2011  1XHSIGRECV Unexpected   signal -1 received at   0x0 in <unknown>. Processing   terminated.  1XHFULLVERSION J2RE 1.4.2 IBM AIX build ca142ifx-20090918 (SR13   FP2)  NULL            1XHCURRENTTHD Current Thread   Details  NULL ----------------------  2XHCURRSYSTHD "WebContainer :   5" sys_thread_t:0x45FB5328  3XHNATIVESTACK Native Stack  NULL ------------  3XHSTACKLINEERR unavailable -   stack address not valid  :::  :::  0SECTION XM subcomponent   dump routine  NULL ============================  NULL             1XMCURTHDINFO Current Thread Details  NULL ----------------------  3XMTHREADINFO "WebContainer : 5" (TID:0x70A8E260, sys_thread_t:0x45FB5328, state:R, native ID:0x5CC0)   prio=5 4XESTACKTRACE at   org.apache.taglibs.standard.tag.common.core.ImportSupport$ImportResponseWrapper.getString(Unknown   Source)  4XESTACKTRACE at   org.apache.taglibs.standard.tag.common.core.ImportSupport.acquireString(Unknown   Source)  4XESTACKTRACE at   org.apache.taglibs.standard.tag.common.core.ImportSupport.doEndTag(Unknown   Source)  4XESTACKTRACE at   com.ibm._jsp._part._jspx_meth_c_import_3(_part.java(Compiled Code))  4XESTACKTRACE at   com.ibm._jsp._part._jspx_meth_c_otherwise_3(_part.java(Compiled   Code))  4XESTACKTRACE at   com.ibm._jsp._part._jspx_meth_c_choose_4(_part.java(Compiled Code))  4XESTACKTRACE at   com.ibm._jsp._part._jspService(_part.java:3237)

这样结合当时的日志文件可以找到问题产生的原因。不过,这种方法只能找到不是内存溢出的错误,对于在core文件头就有java/lang/outMemoryException的错误还是不知道是执行到哪个类的时候出现。

HeapDump文件

HeapDump文件是指定时刻的Java堆栈的快照,是一种镜像文件。Heap Analyzer工具通过分析HeapDump文件,哪些对象占用了太多的堆栈空间,来发现导致内存泄露或者可能引起内存泄露的对象。

JavaCore/HeapDump文件及其分析方法是怎么样的看完上述内容,你们对JavaCore/HeapDump文件及其分析方法是怎么样的有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网精选频道,感谢大家的支持。

--结束END--

本文标题: JavaCore/HeapDump文件及其分析方法是怎么样的

本文链接: https://lsjlt.com/news/288294.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaCore/HeapDump文件及其分析方法是怎么样的
    今天就跟大家聊聊有关JavaCore/HeapDump文件及其分析方法是怎么样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。产生时间Java程序运行时,有时会产生JavaCore及...
    99+
    2023-06-17
  • python中文件操作的其他方法是怎么样的
    今天就跟大家聊聊有关python中文件操作的其他方法是怎么样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。   Python中文件操作的一般方法,包括打开,写入,关闭。本...
    99+
    2023-06-02
  • .NET正则类及其方法应用是怎样的
    本篇文章为大家展示了.NET正则类及其方法应用是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1 概述初学正则时,对于Regex类不熟悉,遇到问题不知道该用哪种方法解决,本文结合一些...
    99+
    2023-06-17
  • /etc/inittab文件的字段及其说明是什么样的
    /etc/inittab文件的字段及其说明是什么样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。/etc/inittab文件中每个登记项的结构都是一样的,共分为以冒号“:”分...
    99+
    2023-06-13
  • 排序算法及其C实现是怎样的
    这期内容当中小编将会给大家带来有关排序算法及其C实现是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。排序算法(Sorting Algorithm)是计算机算法的一个组成部分。排序的目标是将一组数据 ...
    99+
    2023-06-04
  • 浅析php方法怎么在其他文件中调用
    随着PHP技术的不断发展,越来越多的开发者开始关注php方法的相关问题,其中一个比较普遍的问题就是:php方法是否可以在其他文件中调用呢?在这篇文章中,我将详细介绍php方法在其他文件调用的方法和注意事项。一、PHP方法的调用方式在了解ph...
    99+
    2023-05-14
    php
  • python引用其他文件的方法是什么
    在Python中,可以使用import语句来引用其他文件。例如,假设有一个名为"my_module.py"的文件,你可以使用以下方式...
    99+
    2023-09-25
    python
  • cacls命令设置文件及其文件夹权限的方法
    通过cacls命令可以设置文件和文件夹的权限。以下是一些常见的cacls命令及其用法:1. 设置文件的权限:cacls 文件名 /e...
    99+
    2023-08-08
    cacls
  • Linux下sudo及其配置文件/etc/sudoers的示例分析
    这篇文章给大家分享的是有关Linux下sudo及其配置文件/etc/sudoers的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。详解Linux下的sudo及其配置文件/etc/sudoers的详细配置1...
    99+
    2023-06-09
  • Linux系统文件系统及文件基础是怎么样的
    这篇文章将为大家详细讲解有关Linux系统文件系统及文件基础是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。学习Linux,重难点在于掌握不同类别的文件系统及其作用。通过对Linux...
    99+
    2023-06-05
  • Linux下分析bin文件的方法
    这篇文章主要介绍“Linux下分析bin文件的方法”,在日常操作中,相信很多人在Linux下分析bin文件的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux下分析bin文件的方法”的疑惑有所帮助!...
    99+
    2023-06-16
  • pycharm无法加载文件activate.ps1的原因分析及解决方法
    pycharm报错提示:无法加载文件\venv\Scripts\activate.ps1,因为在此系统上禁止运行脚本 在pycharm终端出现报错:无法加载文件\venv\Scrip...
    99+
    2022-11-13
    pycharm无法加载文件activate.ps1 pycharm无法加载文件
  • 如何分析Linux下的sudo及其配置文件/etc/sudoers的配置
    这篇文章的内容主要围绕如何分析Linux下的sudo及其配置文件/etc/sudoers的配置进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!1.su...
    99+
    2023-06-28
  • python解析.pyd文件的方法是什么
    这篇文章主要介绍“python解析.pyd文件的方法是什么”,在日常操作中,相信很多人在python解析.pyd文件的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python解析.pyd文件的方法...
    99+
    2023-06-22
  • Windows中找回删除的文件方法是怎样的
    本篇文章给大家分享的是有关Windows中找回删除的文件方法是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。你是不是曾经后悔将一个已经花了三天时间的项目删除到回收站中?是...
    99+
    2023-06-14
  • Python判断列表是否已排序的各种方法及其性能分析
    声明 本文基于Python2.7语言,给出判断列表是否已排序的多种方法,并在作者的Windows XP主机(Pentium G630 2.7GHz主频2GB内存)上对比和分析其性能表现。 一. 问题提出...
    99+
    2022-06-04
    性能 方法 列表
  • Linux磁盘及文件系统管理是怎么样的
    Linux磁盘及文件系统管理是怎么样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。磁盘基本概念磁盘 分区 MBR GPT格式化好的分区都有一个 lost+found 目录...
    99+
    2023-06-06
  • ThreadLocal原理分析及应用场景是怎样的
    本篇文章给大家分享的是有关ThreadLocal原理分析及应用场景是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1. ThreadLocal是什么?有哪些用途?首先介绍...
    99+
    2023-06-22
  • spring初始化方法的执行顺序及其原理分析
    目录Spring中初始化方法的执行顺序首先通过一个例子来看其顺序配置我们进入这个类看我们看到了annotation-config了我们重点看下这行代码我们直接看initializeB...
    99+
    2024-04-02
  • 总结分析Git pull 常见的错误及其解决方法
    在使用 Git 进行项目协作时,我们经常会使用 git pull 命令来同步远程仓库中的代码到本地。尽管这个命令非常简单易用,但有时候可能会遇到各种各样的错误,甚至导致项目无法正常运行。本文将分析 Git pull 常见的错误及其解决方法。...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作