jmc线程转储_查找线程转储中的异常和错误

jmc线程转储

线程转储是解决生产问题/调试生产问题的重要工件。 在像过去我们已经讨论了几种有效的线程转储故障模式: 堵车 , 跑步机 , RSI , 一个 LL条条大路通罗马 .........。 在本文中,我们想介绍另一种线程转储故障排除模式。

 How to capture thread dumps?  There are 8 different options to capture thread dumps. You can use the option that is convenient to you. dumps. You can use the option that is convenient to you. 

线程转储通常在线程堆栈跟踪中包含异常或错误。 应该检查在其堆栈跟踪中包含异常或错误的线程。 因为它们指出了问题的根源。

最近,一个应用程序引发了java.lang.OutOfMemoryError。 从此应用程序捕获了线程转储。 当我们分析线程转储时,我们会注意到一个特定的线程正在抛出java.lang.OutOfMemoryError:

 Thread 0x3ff781e764e0 at java.lang.OutOfMemoryError.<init>()V (OutOfMemoryError.java:48) at java.lang.ClassLoader.defineClass1(Ljava/lang/String;[BIILjava/security/ProtectionDomain;Ljava/lang/String;)Ljava/lang/Class; (Native Method) at java.lang.ClassLoader.defineClass(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class; (ClassLoader.java:757) at java.lang.ClassLoader.defineClass(Ljava/lang/String;[BII)Ljava/lang/Class; (ClassLoader.java:636) at sun.reflect.GeneratedMethodAccessor37.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (Method.java:498) at com.sun.xml.bind.v2.runtime.reflect.opt.Injector.inject(Ljava/lang/String;[B)Ljava/lang/Class; (Injector.java:125) at com.sun.xml.bind.v2.runtime.reflect.opt.Injector.inject(Ljava/lang/ClassLoader;Ljava/lang/String;[B)Ljava/lang/Class; (Injector.java:48) at com.sun.xml.bind.v2.runtime.reflect.opt.AccessorInjector.prepare(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/Class; (AccessorInjector.java:51) at com.sun.xml.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory.get(Ljava/lang/reflect/Field;)Lcom/sun/xml/bind/v2/runtime/reflect/Accessor; (OptimizedAccessorFactory.java:128) at com.sun.xml.bind.v2.runtime.reflect.Accessor$FieldReflection.optimize(Lcom/sun/xml/bind/v2/runtime/JAXBContextImpl;)Lcom/sun/xml/bind/v2/runtime/reflect/Accessor; (Accessor.java:213) at com.sun.xml.bind.v2.runtime.reflect.TransducedAccessor$CompositeTransducedAccessorImpl.<init>(Lcom/sun/xml/bind/v2/runtime/JAXBContextImpl;Lcom/sun/xml/bind/v2/runtime/Transducer;Lcom/sun/xml/bind/v2/runtime/reflect/Accessor;)V (TransducedAccessor.java:195) : : at com.sun.xml.ws.client.WSServiceDelegate.getPort(Ljavax/xml/ namespace /QName;Ljava/lang/Class;[Ljavax/xml/ws/WebServiceFeature;)Ljava/lang/Object; (WSServiceDelegate.java:274) /QName;Ljava/lang/Class;[Ljavax/xml/ws/WebServiceFeature;)Ljava/lang/Object; (WSServiceDelegate.java:274) at com.sun.xml.ws.client.WSServiceDelegate.getPort(Ljavax/xml/ namespace /QName;Ljava/lang/Class;)Ljava/lang/Object; (WSServiceDelegate.java:267) /QName;Ljava/lang/Class;)Ljava/lang/Object; (WSServiceDelegate.java:267) 

从该堆栈跟踪中,我们能够确定该线程在尝试将xml转换为java对象时遇到了OutOfMemoryError。

显然没有为该应用程序分配足够的内存来处理大型XML有效负载。 因此,当将大型XML发送到此应用程序时,它开始抛出OutOfMemoryError。 当分配了足够的内存(即,增加-Xmx值)时,问题得到解决。 因此,在线程转储中查找“异常”或“错误”是确定问题根源的好模式。

但是在线程转储中查找异常或错误并不是一件容易的事。 因为线程转储往往包含数百或数千个线程。 每个线程将具有多行堆栈跟踪。 遍历堆栈跟踪的每一行以发现异常或错误是一个繁琐的过程。 线程转储分析工具在这里很方便。 您可能考虑使用免费的线程转储分析工具,例如: fastThread , IBM TDMA , Samurai …来分析应用程序线程转储。

将线程转储上载到fastThread应用程序时,它将生成根本原因分析报告。 此报告中的一节之一是“异常”。 在本节中,fastThread应用程序报告所有引发异常或错误的线程。 以下是本节的屏幕截图:

图:fastThread报告中的“异常”部分

您可能会注意到,本节报告了所有在堆栈跟踪中具有“异常”或“错误”的线程。 如果本节中报告了任何线程,则应考虑调查那些线程堆栈跟踪以确定问题的根源。

翻译自: https://www.javacodegeeks.com/2020/06/look-for-exceptions-errors-in-thread-dumps.html

jmc线程转储

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

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

相关文章

命令模式的两种不同实现

转载自 命令模式&#xff08;Command&#xff09;的两种不同实现命令模式&#xff08;Command&#xff09;&#xff1a;将一个请求封装成一个对象&#xff0c;使得你用不同的请求把客户端参数化&#xff0c;对请求排队或者记录请求日志&#xff0c;可以提供命令的撤销和恢复功能…

tomcat(18)部署器

【0】README-1&#xff09;先上干货&#xff1a;本文重点分析了tomcat 如何部署WAR文件的项目形式 以及 普通文件夹的项目形式&#xff1b;不管是WAR文件 还是 普通文件夹的项目形式&#xff0c;在tomcat中&#xff0c;它们都是Context容器&#xff1b;&#xff08;Bingo&#…

装饰器模式和代理模式的区别

转载自 装饰器模式和代理模式的区别学习AOP时&#xff0c;教材上面都说使用的是动态代理&#xff0c;可是在印象中代理模式一直都是控制访问什么的&#xff0c;怎么又动态增加行为了&#xff0c;动态增加行为不是装饰器模式吗&#xff1f;于是找了很多资料&#xff0c;想弄清楚…

使用Java 8 Stream像操作SQL一样处理数据(上)

转载自 使用Java 8 Stream像操作SQL一样处理数据&#xff08;上&#xff09; 几乎每个Java应用都要创建和处理集合。集合对于很多编程任务来说是一个很基本的需求。举个例子&#xff0c;在银行交易系统中你需要创建一个集合来存储用户的交易请求&#xff0c;然后你需要遍历整个…

tomcat(19)Manager应用程序的servlet类

【0】README1&#xff09;本文部分文字描述转自&#xff1a;“深入剖析tomcat”&#xff0c;旨在学习“tomcat(19)Manager应用程序的servlet类” 的相关知识&#xff1b;2&#xff09;Manager应用程序用来管理已经部署的web 应用程序&#xff1b;在tomcat7中&#xff0c;manage…

使用Java 8 Stream像操作SQL一样处理数据(下)

转载自 使用Java 8 Stream像操作SQL一样处理数据&#xff08;下&#xff09; 在上一篇文章中&#xff0c;我们介绍了Stream可以像操作数据库一样来操作集合&#xff0c;但是我们没有介绍 flatMap 和 collect 操作。这两种操作对实现复杂的查询是非常有用的。比如你可以结果 fl…

spring(4)面向切面的Spring(AOP)

【0】README1&#xff09;本文部分文字描述转自&#xff1a;“Spring In Action&#xff08;中/英文版&#xff09;”&#xff0c;旨在review “spring(4)面向切面的Spring&#xff08;AOP&#xff09;”的相关知识&#xff1b;2&#xff09;在软件开发中&#xff0c;散布于应…

Mybatis-plus 思维导图,让 Mybatis-plus 不再难懂

转载自 Mybatis-plus 思维导图&#xff0c;让 Mybatis-plus 不再难懂 摘要: Mybatis-Plus&#xff08;简称MP&#xff09;是一个Mybatis的增强工具&#xff0c;在 Mybatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。mybatis-plus与mybatis mybatis Mybat…

报错:The type javax.servlet.http.HttpServletRequest cannot be resolved

【0】README 0.1&#xff09;以下内容转自&#xff1a; http://blog.csdn.net/vincent080928/article/details/5392891 problem&#xff09;The type javax.servlet.http.HttpServletRequest cannot be resolved. It is indirectly referenced from required .class files. 这…

MyBatis 思维导图,让 MyBatis 不再难懂(一)

转载自 MyBatis 思维导图&#xff0c;让 MyBatis 不再难懂&#xff08;一&#xff09;写在前面与hibernate相比&#xff0c;我无疑更喜欢mybatis&#xff0c;就因为我觉得它真的好用&#xff0c;哈哈。它简单上手和掌握&#xff1b;sql语句和代码分开&#xff0c;方便统一管理和…

tomcat(20)基于JMX的管理

【0】README1&#xff09;本文部分文字描述转自&#xff1a;“深入剖析tomcat”&#xff0c;旨在学习“tomcat(20)基于JMX的管理” 的相关知识&#xff1b;2&#xff09;晚辈我在tomcat上部署web 项目以测试JMX管理 tomcat 容器bean的效果&#xff0c;结果运行不成功&#xff0…

mybatis思维导图,让mybatis不再难懂(二)

转载自 mybatis思维导图&#xff0c;让mybatis不再难懂&#xff08;二&#xff09; 写在前面 上一篇文章写了mybatis的基本原理和配置文件的基本使用&#xff0c;这一篇写mybatis的使用&#xff0c;主要包括与sping集成、动态sql、还有mapper的xml文件一下复杂配置等。值得注意…

spring(5)构建 spring web 应用程序

【0】README1&#xff09;本文部分文字描述转自&#xff1a;“Spring In Action&#xff08;中/英文版&#xff09;”&#xff0c;旨在review “spring(5)构建 spring web 应用程序” 的相关知识&#xff1b;【1】spring mvc 起步【1.1】跟踪spring mvc的请求1&#xff09;请求…

Spring思维导图,让Spring不再难懂(ioc篇)

转载自 Spring思维导图&#xff0c;让Spring不再难懂&#xff08;ioc篇&#xff09; 写过java的都知道&#xff1a;所有的对象都必须创建&#xff1b;或者说&#xff1a;使用对象之前必须先创建。而使用ioc之后&#xff0c;你就可以不再手动创建对象&#xff0c;而是从ioc容器中…

spring(6) 渲染web视图

【0】README1&#xff09;本文部分文字描述转自&#xff1a;“Spring In Action&#xff08;中/英文版&#xff09;”&#xff0c;旨在review “spring(6) 渲染web视图” 的相关知识&#xff1b;【1】 理解视图解析【1.1】视图解析的基础知识以及spring 提供的其他视图解析器1…

Spring思维导图,让Spring不再难懂(aop篇)

转载自 Spring思维导图&#xff0c;让Spring不再难懂&#xff08;aop篇&#xff09; 什么是aop AOP&#xff08;Aspect-OrientedProgramming&#xff0c;面向方面编程&#xff09;&#xff0c;可以说是OOP&#xff08;Object-Oriented Programing&#xff0c;面向对象编程&…

tomcatSupplement(1)tomcat启动脚本分析(以Windows平台为例)

【0】README1&#xff09;本文部分文字描述转自&#xff1a;“深入剖析tomcat”&#xff0c;旨在学习“tomcat启动脚本分析” 的相关知识&#xff1b;2&#xff09;for tomcat4 startup files&#xff0c; please visit https://github.com/pacosonTang/HowTomcatWorks/tree/ma…

Spring思维导图,让spring不再难懂(一)

转载自 Spring思维导图&#xff0c;让spring不再难懂&#xff08;一&#xff09; 摘要: Spring是一个开源框架&#xff0c;是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构&#xff0c;分层架构允许您选择使用哪一个组件&#xff0c;同时为 J2EE …

spring(7)spring mvc 的高级技术

【0】README1&#xff09;本文部分文字描述转自&#xff1a;“Spring In Action&#xff08;中/英文版&#xff09;”&#xff0c;旨在review “spring(7)spring mvc 的高级技术” 的相关知识&#xff1b;2&#xff09;本文将会看到如何编写控制器来处理文件上传&#xff0c;如…

Ubuntu下MySQL、Redis以及MongoDB三个数据库的启动、重启以及停止命令

一、MySQL #启动 /etc/init.d/mysql start #停止 /etc/init.d/mysql stop #重启 /etc/init.d/mysql restart 二、Redis #启动 redis-server #停止 pkill redis-server三、MongoDB #启动服务 sudo service mongod start #重启 sudo service mongod restart #终止 sudo serv…