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

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…

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;这些问…

GoldenGate Logdump基本使用

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

.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;我们将解释它的含义以及它将如何影响您的代码。 新帖&#…

coherence安装_Oracle Coherence:分布式数据管理

coherence安装本文介绍如何使用Oracle Coherence提供分布式&#xff08;分区&#xff09;数据管理。 在下面的示例应用程序中&#xff0c;创建了一个名为OTV的新集群&#xff0c;并且在该集群的两个成员之间分配了一个名为user-map的缓存对象。 二手技术&#xff1a; JDK 1.6.…

JavaFX技巧来节省内存! 属性和可观察物的阴影场

在 JavaFX的世界中&#xff0c; Properties API允许UI开发人员将值绑定到UI控件。 这种功能非常容易&#xff0c;但是当对象模型经常使用属性时&#xff0c;应用程序可能会很快耗尽内存。 我通常会编写两个单独的对象&#xff0c;例如pojo类和表示模型对象。 此技术通常在基于S…

如何在Hibernate Search 5.5.2 / Apache Lucene 5.4.x中处理停用词?

停用词&#xff0c;例如[“ a”&#xff0c;“ an”&#xff0c;“ and”&#xff0c;“ are”&#xff0c;“ as”&#xff0c;“ at”&#xff0c;“ be”&#xff0c;“ but”&#xff0c;“ by”&#xff0c;“ for”&#xff0c;“ if”&#xff0c;“在”&#xff0c;“成…

Java----前端验证之验证码额实现

验证码是常用的登录验证方式之一,最大的作用就是保证安全,验证码的生成在java中实现的方式有很多种,比如后台生成传输到前端页面,在前台直接生成进行验证,下面写一个最简单实现验证码验证登录的例子. 生成验证码: 验证码验证逻辑: From表单登录: 没错,就这么的简单.在scripts生…

使用Spring Boot隔离集成测试和模拟依赖项

集成测试可能很慢且不可靠&#xff0c;因为它们依赖于系统中过多的组件。 在某种程度上&#xff0c;这是不可避免的&#xff1a;这里的集成测试是为了验证系统的每个部分如何与其他内部或外部组件一起玩。 但是&#xff0c;我们可以通过仅分解所需的依赖关系而不是整个系统来改…

Ubuntu 16.04下使用Wine安装Xshell 4和Xftp 4

说明&#xff1a; 1、使用的Wine版本是深度出品&#xff08;Deepin&#xff09;&#xff0c;已经精简了很多没用的配置&#xff0c;使启动能非常快&#xff0c;占用资源小。 2、由于Xshell 5的C库无法在这个Wine版本运行&#xff0c;即使升级官方原版的2版本也无法解决&#xf…

电脑缺失MSVCP110.dll文件

安装某软件显示如下错误。 错误&#xff1a; 原因&#xff1a;电脑缺少MSVCP110.dll系统文件。C:\Windows\System32目录下没有此文件。 解决&#xff1a; 下载vcredist_x64直接双击安装&#xff0c;安装完成后就可以继续安装之前安装不了的软件了。。 这里是我下载的&#…

在WildFly的REST Web服务中与Jackson的双向关系

这是使用Jackson的REST Web服务中Java实体之间的双向关系的示例。 假设我们在两个实体Parent和Child之间存在双向关系。 使用MySQL工作台为这两个表生成SQL模式文件。 DROP SCHEMA IF EXISTS bidirectional_schema ; CREATE SCHEMA IF NOT EXISTS bidirectional_schema DEFA…