jmc线程转储_如何分析线程转储– IBM VM

jmc线程转储

本文是我们的线程转储分析系列的第4部分,它将为您提供什么是IBM VM的JVM线程转储以及您将找到的不同线程和数据点的概述。 您将看到和学习​​到,IBM VM Thread Dump格式是不同的,但是提供了更多现成的故障排除数据。

在这一点上,您应该知道线程如何与Java EE容器交互以及什么是线程转储。 在深入探究分析模式之前,您还需要了解IBM VM Thread Dump格式,因为这是在IBM VM上使用IBM WAS时期望的典型Thread Dump数据。

IBM VM线程转储故障概述

为了使您更好地理解,请在下面的图表中向您显示IBM 1.6 VM线程转储及其常见数据点的可视分类:

您可以从HotSpot VM线程转储中找到其他多余的运行时数据。 请记住,您可能不需要检查所有这些数据点,但是您仍然需要了解根据问题情况可用的数据。 本文的其余部分将更详细地介绍每个线程转储部分。

#线程转储生成事件

第一部分为您提供有关如何生成此线程转储的详细信息。 IBM Thread Dump可以由“信号3”或“用户”生成,例如kill -3 <Java pid>,也可以由严重的JVM条件(例如OutOfMemoryError)自动生成。

0SECTION       TITLE subcomponent dump routineNULL           ===============================1TISIGINFO     Dump Event "user" (00004000) received 1TIDATETIME    Date:                 2012/03/12 at 20:52:131TIFILENAME    Javacore filename:    /apps/wl11g/domains/app/javacore.20120312.205205.1949928.0004.txt1TIREQFLAGS    Request Flags: 0x81 (exclusive+preempt)1TIPREPSTATE   Prep State: 0x4 (exclusive_vm_access)0SECTION       TITLE subcomponent dump routineNULL           ===============================1TISIGINFO     OUTOFMEMORY received 1TIDATETIME    Date:                 2012/06/01 at 09:52:121TIFILENAME    Javacore filename:    /usr/WebSphere/AppServer/javacore311328.1338524532.txt

#硬件和操作系统环境详细信息

下一部分为您提供了有关此IBM VM所运行的当前硬件和操作系统的一些详细信息:

0SECTION       GPINFO subcomponent dump routineNULL           ================================2XHOSLEVEL     OS Level         : AIX 5.32XHCPUS        Processors -3XHCPUARCH       Architecture   : ppc643XHNUMCPUS       How Many       : 63XHNUMASUP       NUMA is either not supported or has been disabled by user

#JRE详细信息和Java启动参数

本节非常有用,因为它为您提供了有关JRE主版本和补丁程序级别以及所有JVM启动参数的完整视图。

0SECTION       ENVINFO subcomponent dump routineNULL           =================================1CIJAVAVERSION JRE 1.6.0 IBM J9 2.4 AIX ppc64-64 build jvmap6460sr9-20101124_692951CIVMVERSION   VM build 20101124_0692951CIJITVERSION  JIT enabled, AOT enabled - r9_20101028_17488ifx21CIGCVERSION   GC - 20101027_AA1CIRUNNINGAS   Running as a standalone JVM…………………………………………………………………………………………

#用户和环境变量

本节为您提供了当前用户和环境变量的列表,例如文件描述符限制。

1CIUSERLIMITS  User Limits (in bytes except for NOFILE and NPROC)NULL           ------------------------------------------------------------------------NULL           type                            soft limit           hard limit2CIUSERLIMIT   RLIMIT_AS                        unlimited            unlimited2CIUSERLIMIT   RLIMIT_CORE                     1073741312            unlimited2CIUSERLIMIT   RLIMIT_CPU                       unlimited            unlimited2CIUSERLIMIT   RLIMIT_DATA                      unlimited            unlimited2CIUSERLIMIT   RLIMIT_FSIZE                     unlimited            unlimited2CIUSERLIMIT   RLIMIT_NOFILE                         4096                 40962CIUSERLIMIT   RLIMIT_RSS                        33554432            unlimited2CIUSERLIMIT   RLIMIT_STACK                      33554432           4294967296

#Java堆详细信息和GC历史记录

与HotSpot VM 1.6+相似,IBM VM线程转储还包含有关Java堆容量和利用率的信息,以及为Java进程的每个内存空间分配的内存段。

请记住,更深入的Java Heap分析将需要您按照以下教程分析Heap Dump二进制快照。 http://javaeesupportpatterns.blogspot.com/2011/02/ibm-sdk-heap-dump-httpsession-footprint.html

最后,还介绍了垃圾回收过程的历史。

0SECTION       MEMINFO subcomponent dump routineNULL           =================================1STHEAPFREE    Bytes of Heap Space Free: 51104BC8 1STHEAPALLOC   Bytes of Heap Space Allocated: 800000001STSEGTYPE     Internal Memory…………………………………………………………………………………………1STSEGTYPE     Object Memory…………………………………………………………………………………………1STSEGTYPE     Class Memory…………………………………………………………………………………………1STSEGTYPE     JIT Code Cache…………………………………………………………………………………………1STSEGTYPE     JIT Data Cache…………………………………………………………………………………………STGCHTYPE     GC History  3STHSTTYPE     00:52:07:523048405 GMT j9mm.51 -   SystemGC end: 
newspace=466136480/483183616 oldspace=899251600/1610612736 loa=80530432/80530432 3STHSTTYPE     00:52:07:523046694 GMT j9mm.139 -   Reference count end: weak=40149 
soft=87504 phantom=33 threshold=17 maxThreshold=32 3STHSTTYPE     00:52:07:522164027 GMT j9mm.91 -   GlobalGC end: workstackoverflow=0 
overflowcount=0 weakrefs=40149 soft=87504 threshold=17 phantom=33 finalizers=4947 
newspace=466136480/483183616 oldspace=899251600/1610612736 loa=80530432/80530432 3STHSTTYPE     00:52:07:522152764 GMT j9mm.90 -   GlobalGC collect complete

#Java和JVM对象监视器的锁和死锁详细信息

此线程转储部分非常重要。 线程问题经常涉及线程由于特定对象监视器上的锁而在彼此之间等待,例如线程B等待获取线程A持有的对象监视器上的锁。死锁条件还可以不时触发;例如, 特别是对于非线程安全的实现。

IBM VM线程转储提供了一个单独的部分,您可以在其中分析每个线程持有的锁,包括等待链,例如,许多线程正在等待获取同一对象监视器锁。

0SECTION       LOCKS subcomponent dump routineNULL           ===============================NULL           1LKPOOLINFO    Monitor pool info:2LKPOOLTOTAL     Current total number of monitors: 1034NULL           1LKMONPOOLDUMP Monitor Pool Dump (flat & inflated object-monitors):2LKMONINUSE      sys_mon_t:0x0000000115B53060 infl_mon_t: 0x0000000115B530A0:3LKMONOBJECT       java/util/Timer$TimerImpl@0x0700000000C92AA0/0x0700000000C92AB8: <unowned>3LKNOTIFYQ            Waiting to be notified:3LKWAITNOTIFY            "Thread-7" (0x0000000114CAB400)…………………………………………………………………………## Threads waiting chain2LKMONINUSE      sys_mon_t:0x000000012462FE00 infl_mon_t: 0x000000012462FE40:3LKMONOBJECT       com/inc/server/app/Request@0x07000000142ADF30/0x07000000142ADF48: owner "Thread-30" (0x000000012537F300), entry count 13LKNOTIFYQ            Waiting to be notified:3LKWAITNOTIFY            "Thread-26" (0x0000000125221F00)3LKWAITNOTIFY            "Thread-27" (0x0000000125252000)3LKWAITNOTIFY            "Thread-28" (0x000000012527B800)3LKWAITNOTIFY            "Thread-29" (0x00000001252DDA00)3LKWAITNOTIFY            "Thread-31" (0x0000000125386200)3LKWAITNOTIFY            "Thread-32" (0x0000000125423600)3LKWAITNOTIFY            "Thread-33" (0x000000012548C500)3LKWAITNOTIFY            "Thread-34" (0x00000001255D6000)3LKWAITNOTIFY            "Thread-35" (0x00000001255F7900)…………………………………………………………………………

#Java EE中间件,第三方和自定义应用程序线程

与HotSpot VM线程转储格式相似,此部分是线程转储的核心,通常您将在其中花费大部分分析时间。 找到的线程数将取决于您使用的中间件软件,第三方库(可能具有自己的线程)和您的应用程序( 如果创建任何自定义线程,通常不是最佳实践 )。

在下面的示例中,以下线程处于BLOCK状态,这通常意味着它正在等待获取对象监视器上的锁。 您将需要在前面的部分中进行搜索,并确定哪个线程持有该锁,以便您可以查明根本原因。

3XMTHREADINFO      "[STUCK] ExecuteThread: '162' for queue: 'weblogic.kernel.Default 
(self-tuning)'" J9VMThread:0x000000013ACF0800, j9thread_t:0x000000013AC88B20, 
java/lang/Thread:0x070000001F945798, state:B, prio=13XMTHREADINFO1            (native thread ID:0x1AD0F3, native priority:0x1, native 
policy:UNKNOWN)3XMTHREADINFO3           Java callstack:4XESTACKTRACE                at org/springframework/jms/connection/SingleConnectionFactory.createConnection(SingleConnectionFactory.java:207(Compiled Code))4XESTACKTRACE                at org/springframework/jms/connection/SingleConnectionFactory.createQueueConnection(SingleConnectionFactory.java:222(Compiled Code))4XESTACKTRACE                at org/springframework/jms/core
/JmsTemplate102.createConnection(JmsTemplate102.java:169(Compiled Code))4XESTACKTRACE                at org/springframework/jms/core
/JmsTemplate.execute(JmsTemplate.java:418(Compiled Code))4XESTACKTRACE                at org/springframework/jms
/core/JmsTemplate.send(JmsTemplate.java:475(Compiled Code))4XESTACKTRACE                at org/springframework/jms
/core/JmsTemplate.send(JmsTemplate.java:467(Compiled Code))…………………………………………………………………………………………………………

#JVM类加载器摘要

最后,IBM VM Thread Dump的最后一部分为您提供了详细的类加载器摘要。 在处理与Class Loader相关的问题和泄漏时,这是非常关键的数据。 您将在运行的JVM中找到每个活动Class loader的已加载Class的数量和类型。

我建议您阅读以下案例研究,以获取有关如何在使用IBM VM时查明此类问题的根本原因的完整教程。
http://javaeesupportpatterns.blogspot.com/2011/04/class-loader-memory-leak-debugging.html

0SECTION       CLASSES subcomponent dump routineNULL           =================================1CLTEXTCLLOS        Classloader summaries1CLTEXTCLLSS               12345678: 1=primordial,2=extension,3=shareable
,4=middleware,5=system,6=trusted,7=application,8=delegating2CLTEXTCLLOADER            p---st-- Loader *System*(0x0700000000878898)3CLNMBRLOADEDLIB           Number of loaded libraries 63CLNMBRLOADEDCL                  Number of loaded classes 37212CLTEXTCLLOADER            -x--st-- Loader sun/misc
/Launcher$ExtClassLoader(0x0700000000AE8F40), Parent *none*(0x0000000000000000)3CLNMBRLOADEDLIB           Number of loaded libraries 03CLNMBRLOADEDCL                  Number of loaded classes 912CLTEXTCLLOADER            -----ta- Loader sun/misc/Launcher$AppClassLoader(0x07000000008786D0)
, Parent sun/misc/Launcher$ExtClassLoader(0x0700000000AE8F40)3CLNMBRLOADEDLIB           Number of loaded libraries 33CLNMBRLOADEDCL                  Number of loaded classes 15178……………………………………………………………………………………………

我希望本文有助于理解IBM VM线程转储的基本视图。 下一篇文章(第5部分)将通过一步一步的教程和我在过去十年中使用的技术为您提供有关如何分析JVM线程转储的教程。

参考: 如何分析线程转储–第4部分: Java EE支持模式和Java教程博客上的JCG合作伙伴 Pierre-Hugues Charbonneau提供的IBM VM 。


翻译自: https://www.javacodegeeks.com/2012/06/how-to-analyze-thread-dump-ibm-vm.html

jmc线程转储

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java lock

多线程访问同一个变量&#xff0c;不进行同步&#xff0c;会造成结果不一致。这里解决方案有很多&#xff0c;使用原子变量。加锁同步&#xff0c;使用synchronized同步。下面是一个lock demo&#xff0c;后面会分析lock实现原理。lock使用的是公平锁还是非公平锁等 import jav…

Java 8:使用交替接口公开的类型安全地图生成器

动态展示您的课程 当我是Java新手时&#xff0c;我记得当时想过应该有一种方法可以删除或隐藏我不想公开的类中的方法。 就像用private方法或类似方法覆盖public方法一样&#xff08;哪种情况是不可能的&#xff0c;也不应该是不可能的&#xff09;。 显然&#xff0c;今天&…

nodejs面试题

1、为什么用Nodejs,它有哪些缺点&#xff1f; 事件驱动&#xff0c;通过闭包很容易实现客户端的生命活期。不用担心多线程&#xff0c;锁&#xff0c;并行计算的问题V8引擎速度非常快对于游戏来说&#xff0c;写一遍游戏逻辑代码&#xff0c;前端后端通用当然Nodejs也有一些缺点…

sts-bundle的使用_使用WS-Trust / STS采样器扩展JMeter

sts-bundle的使用JMeter没有对WS-Security或WS-Trust的任何内置支持&#xff0c;这使我为JMeter开发了此STS采样器–可以在负载测试STS时使任何人的生活变得更好。 首先&#xff0c;您需要拥有Apache JMeter发行版。 我正在使用v2.7。 然后&#xff0c;您可以从此处下载sts.sam…

001_jdk配置

配置JAVA_HOME,CLASSPATH,PATH 其中JAVA_HOME必须的 JAVA_HOMEE:\java\jdk1.8.0_77 CLASSPATH(告诉java程序运行时&#xff0c;你的类或者类库在哪里) .; E:\java\jdk1.8.0_77\lib\dt.jar;E:\java\jdk1.8.0_77\lib\tools.jar;E:\java\jdk1.8.0_77\jre\lib\rt.jar 改成变量 .;%J…

Spring MVC 4快速入门Maven原型得到了改进–更多Java 8功能

对于所有有兴趣在没有Spring Boot的情况下快速引导Spring 4应用程序的开发人员&#xff0c;请检查刚刚更新的我的Spring MVC 4 Quickstart Maven原型。 原型已经将Java 8用作目标平台已有一段时间了&#xff0c;但是不支持特定的Java 8功能。 最近的更改带来了Thymeleaf&#x…

python -- join()

python -- join()pythonjoinos月似当时&#xff0c;人似当时否&#xff1f;总 在 python 中&#xff0c;一共有两个 join 方法&#xff0c;一个是 str.join(),另一个是 os.path.join() &#xff0c;这里只了解前一种 str.join(iterable) 官方文档 Return a string which is the…

easymock教程_EasyMock教程–入门

easymock教程在本文中&#xff0c;我将向您展示EasyMock是什么&#xff0c;以及如何使用它来测试Java应用程序。 为此&#xff0c;我将创建一个简单的Portfolio应用程序&#xff0c;并使用JUnit&#xff06;EasyMock库对其进行测试。 在开始之前&#xff0c;让我们首先了解使用…

python 函数、面向对象

一、函数 1、定义个函数&#xff0c;可以对输入的数据进行排序&#xff0c; 通过参数来决定是正向排序还是反向排序。 number input(请输入一串数字&#xff1a;) number_list list(number) def sort_number(*args, s0): if s 0: number_map map(int,args)result sorted…

Spark数据倾斜解决方案(转)

本文转发自技术世界&#xff0c;原文链接 http://www.jasongj.com/spark/skew/ Spark性能优化之道——解决Spark数据倾斜&#xff08;Data Skew&#xff09;的N种姿势 发表于 2017-02-28 | 更新于 2017-10-17 | 本文结合实例详细阐明了Spark数据倾斜的几种场景以及对应的解…

JavaParser入门:以编程方式分析Java代码

我最喜欢的事情之一是解析代码并对其执行自动操作。 因此&#xff0c;我开始为JavaParser做出贡献&#xff0c;并创建了两个相关项目&#xff1a; java-symbol-solver和Effectivejava 。 作为JavaParser的贡献者&#xff0c;我反复阅读了一些非常类似的问题&#xff0c;这些问…

python Django基本介绍

创建Django项目并运行 实验环境&#xff1a; Ubuntu 16.04下安装好Anaconda3 Windows下安装好PyCharm 实验步骤 一、创建django工程 在Ubuntu 16.04下执行下面的命令。 &#xff08;1&#xff09;创建一个python3的虚拟环境&#xff08;如果已经创建&#xff0c;忽略此步&…

Android 热补丁动态修复框架小结

Android 热补丁动态修复框架小结转载于:https://www.cnblogs.com/zhujiabin/p/7923233.html

C语言中关于结构体的理解

在c语言中我们如果需要去表示一个学生的特征&#xff0c;例如名字年龄成绩&#xff0c;这些信息我们就需要用到结构体来描述了。 struct stu{char name[20]; //姓名int age; //年龄float score; //成绩 }; struct(结构体)&#xff1a;是由一系列具有相同类型…

GoldenGate Logdump基本使用

Logdump是GoldenGate复制软件中附带的一个工具软件&#xff0c;在OGG的目录下可以找到。这个工具主要用于分析OGG生成的队列文件&#xff0c;查找记录、统计队列文件中的数据等。 在OGG安装目录下执行logdump.exe or ./logdump即可进入命令行。 开始查找记录之前&#xff0c;先…

js 里面的键盘事件对应的键码

js 里面的键盘事件经常用到&#xff0c;所以收集了键盘事件对应的键码来分享下&#xff1a; keyCode 8 BackSpace BackSpace keyCode 9 Tab Tab keyCode 12 Clear keyCode 13 Enter keyCode 16 Shift_L keyCode 17 Control_L keyCode 18 Alt_L keyCode 19 Pause keyCo…

.bam.bai的意义_业务活动监视器(BAM)2.0带来的革命

.bam.bai的意义生产兼具精益和企业价值的中间件是一项艰巨的工作。 它要么不存在&#xff0c;要么需要创新的思维&#xff08;很多&#xff09;&#xff0c;并且需要在实现中反复进行。 业务风险很大&#xff0c;但是如果您做对了&#xff0c;它就会使您领先于其他任何公司。 这…

数据结构和算法之排序五:选择排序

我们上一篇谈到了冒泡排序&#xff0c;其实我也说了&#xff0c;这两个排序方式何其相似&#xff0c;如果掌握了冒泡排序再来进行选择排序的理解我觉得完全没有太大的问题。那么什么叫做选择排序呢&#xff1f;我们可以理解为矮子里面挑高个&#xff0c;比如说呀有一个富翁来到…

Visual Studio Code使用问题

1、打开vscode黑屏 右击vscode快捷方式–>属性–>兼容性—>兼容模式打钩 重启vscode就可以了。 2、vscode终端没有显示路径&#xff0c;不能输入 显示如下图 则关闭VS Code ,右键单击VS Code 图标&#xff0c;选择属性->兼容性&#xff0c;取消勾选 已兼容模式运…

Java社区调查结果:74%的开发人员希望减少详细程度

一个新的JDK增强建议&#xff08;JEP&#xff09;在Java社区中风起云涌&#xff1a;JEP286。该建议建议在Java的未来版本中引入局部变量类型推断&#xff0c;以简化Java应用程序的编写。 在下面的文章中&#xff0c;我们将解释它的含义以及它将如何影响您的代码。 新帖&#…