怎么分析一个java的core dump文件?


你的java程序,突然之间,崩溃掉了,并且生成了core dump文件(内核dump文件)

 

这个时候,你该怎么办呢 ?

 

在本文档中,你将会知道怎样,对java的core dump文件进行分析,知道是什么原因导致的java程序崩溃、宕机。

 

方法 1:hs_err_pid日志文件

 

当jvm发生严重的故障的时候,会生成一个错误的日志文件,叫做hs_err_pidXXX.log文件

 

这个文件的开头部分,包含了引起崩溃的原因,比如:

 

$ head hs_err_pid21178.log
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x0000002b1d00075c, pid=21178, tid=1076017504
#
# JRE version: 6.0_21-b06
# Java VM: Java HotSpot(TM) 64-Bit Server VM (17.0-b16 mixed mode linux-amd64 )
# Problematic frame:
# C  [libnativelib.so+0x75c]  bar+0x10
#

 

同时包括相关的堆栈信息

 

Stack: [0x000000004012b000,0x000000004022c000],  sp=0x000000004022aac0,  free space=3fe0000000000000018k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [libnativelib.so+0x75c]  bar+0x10
C  [libnativelib.so+0x772]  foo+0xe
C  [libnativelib.so+0x78e]  Java_CoreDumper_core+0x1a
j  CoreDumper.core()V+0
j  CoreDumper.main([Ljava/lang/String;)V+7
v  ~StubRoutines::call_stub
V  [libjvm.so+0x3e756d]

 

方法 2:调试一个java core dump文件

 

在某些情况下,JVM程序崩溃时,并没有生成hs_err_pid错误日志文件,这个时候,需要分析生成的core dump文件

 

JVM挂掉时,产生如下的错误信息

 

/usr/local/bin/entrypoint.sh: line 768:    77 Segmentation fault      (core dumped) java -Dspring_profiles_active=test -Duse_local_conf=true -Ducf.usingXssFilter=false -Ducf.usingSqlInjectFilter=false -Dyms.logging.console=false -Dserver.port=$RUN_PORT1 -Dlogback.ContextSelector=iuap.yms.logging.YMSDynamicContextSelector -jar $CATALINA_OPTS $JAVA_OPTS /app/yms.jar > stdout.log 2> stderr.log

 

linux 操作系统,一般在以下的目录中生成core dump文件

 

[root@yks coredump]# pwd
/var/lib/systemd/coredump
[root@yks coredump]# ls
core.java.0.13f526e86d594c84b8d1e81350652513.1002497.1684925692000000000000.lz4  core.java.0.13f526e86d594c84b8d1e81350652513.3021304.1684991750000000000000.lz4  core.java.0.13f526e86d594c84b8d1e81350652513.886489.1684924527000000000000.lz4
core.java.0.13f526e86d594c84b8d1e81350652513.1033031.1684925966000000000000.lz4  core.java.0.13f526e86d594c84b8d1e81350652513.486294.1684840068000000000000.lz4   core.java.0.13f526e86d594c84b8d1e81350652513.906130.1685005192000000000000.lz4
core.java.0.13f526e86d594c84b8d1e81350652513.1124818.1684926927000000000000.lz4  core.java.0.13f526e86d594c84b8d1e81350652513.719506.1684845137000000000000.lz4   core.java.0.13f526e86d594c84b8d1e81350652513.911941.1684924787000000000000.lz4
core.java.0.13f526e86d594c84b8d1e81350652513.1218294.1684928407000000000000.lz4  core.java.0.13f526e86d594c84b8d1e81350652513.821657.1684923992000000000000.lz4   core.java.0.13f526e86d594c84b8d1e81350652513.979175.1684925431000000000000.lz4
[root@yks coredump]# 

 

通过以下的几种工具,你可以对core dump文件进行调试

 

1、gdb

 

GNU Debugger (gdb),可以对core文件进行检查,找出当程序崩溃的时候,程序正在做什么

 

$ gdb $JAVA_HOME/bin/java /var/tmp/cores/java.14015.146385.core
(gdb) where
#0  0x0000002a959bd26d in raise () from /lib64/tls/libc.so.6
#1  0x0000002a959bea6e in abort () from /lib64/tls/libc.so.6
#2  0x0000002b1cecf799 in bar () from libnativelib.so
#3  0x0000002b1cecf7a7 in foo () from libnativelib.so
#4  0x0000002b1cecf7c3 in Java_CoreDumper_core () from libnativelib.so
#5  0x0000002a971aac88 in ?? ()
#6  0x0000000040113800 in ?? ()
#7  0x0000002a9719fa42 in ?? ()
#8  0x000000004022ab10 in ?? ()
#9  0x0000002a9a4d5488 in ?? ()
#10 0x000000004022ab70 in ?? ()
#11 0x0000002a9a4d59c8 in ?? ()
#12 0x0000000000000000 in ?? ()

 

where命令打印堆栈信息,知道是哪个程序引起的宕机。

 

2、jstack

 

jstack可以打印core dump文件的线程堆栈信息

 

jstack -J-d64 /usr/local/java/bin/java core.java.0.13f526e86d594c84b8d1e81350652513.568426.1684721501000000000000 

 

[online-iuap-yms-console-944ccd786-lv4gg root:/data]# jstack -J-d64 /usr/local/java/bin/java core.java.0.13f526e86d594c84b8d1e81350652513.568426.1684721501000000000000 
Attaching to core core.java.0.13f526e86d594c84b8d1e81350652513.568426.1684721501000000000000 from executable /usr/local/java/bin/java, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.345-b01
Deadlock Detection:

No deadlocks found.

Thread 347: (state = BLOCKED)
 - sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
 - java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14, line=175 (Compiled frame)
 - java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(java.util.concurrent.SynchronousQueue$TransferStack$SNode, boolean, long) @bci=144, line=458 (Interpreted frame)
 - java.util.concurrent.SynchronousQueue$TransferStack.transfer(java.lang.Object, boolean, long) @bci=102, line=362 (Interpreted frame)
 - java.util.concurrent.SynchronousQueue.take() @bci=7, line=924 (Interpreted frame)
 - java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149, line=1074 (Compiled frame)
 - java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26, line=1134 (Interpreted frame)
 - java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5, line=624 (Interpreted frame)
 - java.lang.Thread.run() @bci=11, line=750 (Interpreted frame)


... 中间省略 ...


Thread 334: (state = BLOCKED)
 - sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
 - java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14, line=175 (Compiled frame)
 - java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(java.util.concurrent.SynchronousQueue$TransferStack$SNode, boolean, long) @bci=144, line=458 (Interpreted frame)
 - java.util.concurrent.SynchronousQueue$TransferStack.transfer(java.lang.Object, boolean, long) @bci=102, line=362 (Interpreted frame)
 - java.util.concurrent.SynchronousQueue.take() @bci=7, line=924 (Interpreted frame)
 - java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149, line=1074 (Compiled frame)
 - java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26, line=1134 (Interpreted frame)
 - java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5, line=624 (Interpreted frame)
 - java.lang.Thread.run() @bci=11, line=750 (Interpreted frame)

... 中间省略 ...

Thread 332: (state = IN_NATIVE)
 - sun.nio.ch.EPollArrayWrapper.epollWait(long, int, long, int) @bci=0 (Compiled frame; information may be imprecise)
 - sun.nio.ch.EPollArrayWrapper.poll(long) @bci=18, line=269 (Compiled frame)
 - sun.nio.ch.EPollSelectorImpl.doSelect(long) @bci=28, line=93 (Compiled frame)
 - sun.nio.ch.SelectorImpl.lockAndDoSelect(long) @bci=37, line=86 (Compiled frame)
 - sun.nio.ch.SelectorImpl.select(long) @bci=30, line=97 (Compiled frame)
 - sun.nio.ch.SelectorImpl.select() @bci=2, line=101 (Interpreted frame)
 - io.netty.channel.nio.SelectedSelectionKeySetSelector.select() @bci=11, line=68 (Interpreted frame)
 - io.netty.channel.nio.NioEventLoop.select(long) @bci=12, line=879 (Interpreted frame)
 - io.netty.channel.nio.NioEventLoop.run() @bci=115, line=526 (Interpreted frame)
 - io.netty.util.concurrent.SingleThreadEventExecutor$4.run() @bci=44, line=997 (Interpreted frame)
 - io.netty.util.internal.ThreadExecutorMap$2.run() @bci=11, line=74 (Interpreted frame)
 - io.netty.util.concurrent.FastThreadLocalRunnable.run() @bci=4, line=30 (Interpreted frame)
 - java.lang.Thread.run() @bci=11, line=750 (Interpreted frame)


... 中间省略 ...

Thread 303: (state = IN_NATIVE)
 - sun.nio.ch.EPollArrayWrapper.epollWait(long, int, long, int) @bci=0 (Compiled frame; information may be imprecise)
 - sun.nio.ch.EPollArrayWrapper.poll(long) @bci=18, line=269 (Compiled frame)
 - sun.nio.ch.EPollSelectorImpl.doSelect(long) @bci=28, line=93 (Compiled frame)
 - sun.nio.ch.SelectorImpl.lockAndDoSelect(long) @bci=37, line=86 (Compiled frame)
 - sun.nio.ch.SelectorImpl.select(long) @bci=30, line=97 (Compiled frame)
 - org.apache.tomcat.util.net.NioEndpoint$Poller.run() @bci=55, line=805 (Interpreted frame)
 - java.lang.Thread.run() @bci=11, line=750 (Interpreted frame)


... 中间省略 ...


Thread 295: (state = IN_NATIVE)
 - org.apache.commons.crypto.cipher.OpenSslNative.initIDs() @bci=0 (Interpreted frame)
 - org.apache.commons.crypto.cipher.OpenSsl.<clinit>() @bci=8, line=71 (Interpreted frame)
 - org.apache.commons.crypto.cipher.OpenSslCipher.<init>(java.util.Properties, java.lang.String) @bci=9, line=59 (Interpreted frame)
 - sun.reflect.NativeConstructorAccessorImpl.newInstance0(java.lang.reflect.Constructor, java.lang.Object[]) @bci=0 (Compiled frame)
 - sun.reflect.NativeConstructorAccessorImpl.newInstance(java.lang.Object[]) @bci=85, line=62 (Compiled frame)
 - sun.reflect.DelegatingConstructorAccessorImpl.newInstance(java.lang.Object[]) @bci=5, line=45 (Compiled frame)
 - java.lang.reflect.Constructor.newInstance(java.lang.Object[]) @bci=79, line=423 (Compiled frame)
 - org.apache.commons.crypto.utils.ReflectionUtils.newInstance(java.lang.Class, java.lang.Object[]) @bci=50, line=135 (Interpreted frame)
 - org.apache.commons.crypto.cipher.CryptoCipherFactory.getCryptoCipher(java.lang.String, java.util.Properties) @bci=94, line=187 (Interpreted frame)
 - org.apache.commons.crypto.utils.Utils.getCipherInstance(java.lang.String, java.util.Properties) @bci=2, line=165 (Interpreted frame)
 - com.yonyou.ncc.dto.datasource.AESEncode.aesEncode(java.lang.Long, java.lang.String, java.lang.String) @bci=19, line=80 (Interpreted frame)
 - com.yonyou.ncc.dto.datasource.AESEncode.encrypt(java.lang.Long, java.lang.String, java.lang.String) @bci=15, line=50 (Interpreted frame)
 - com.yonyou.ncc.strategy.PropInfoHandler.handleSave(java.lang.String, java.lang.String, java.lang.Long, java.lang.String, java.lang.String, java.lang.String) @bci=68, line=374 (Interpreted frame)
 - com.yonyou.manage.api.ManageConfigForNCController.saveNCConfig(java.util.Map) @bci=266, line=245 (Interpreted frame)
 - sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) @bci=0 (Compiled frame)
 - sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) @bci=100, line=62 (Compiled frame)
 - sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) @bci=6, line=43 (Compiled frame)
 - java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) @bci=56, line=498 (Compiled frame)
 - org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(java.lang.Object[]) @bci=28, line=205 (Compiled frame)
 - org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(org.springframework.web.context.request.NativeWebRequest, org.springframework.web.method.support.ModelAndViewContainer, java.lang.Object[]) @bci=54, line=150 (Compiled frame)
 - org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(org.springframework.web.context.request.ServletWebRequest, org.springframework.web.method.support.ModelAndViewContainer, java.lang.Object[]) @bci=4, line=117 (Compiled frame)
 - org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.springframework.web.method.HandlerMethod) @bci=244, line=895 (Compiled frame)
 - org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.springframework.web.method.HandlerMethod) @bci=81, line=808 (Compiled frame)
 - org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object) @bci=7, line=87 (Compiled frame)
 - org.springframework.web.servlet.DispatcherServlet.doDispatch(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) @bci=259, line=1072 (Compiled frame)
 - org.springframework.web.servlet.DispatcherServlet.doService(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) @bci=241, line=965 (Compiled frame)
 - org.springframework.web.servlet.FrameworkServlet.processRequest(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) @bci=71, line=1006 (Compiled frame)
 - org.springframework.web.servlet.FrameworkServlet.doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) @bci=3, line=909 (Interpreted frame)
 - javax.servlet.http.HttpServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) @bci=149, line=696 (Compiled frame)
 - org.springframework.web.servlet.FrameworkServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) @bci=33, line=883 (Compiled frame)
 - javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=36, line=779 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=304, line=227 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=99, line=162 (Compiled frame)
 - org.apache.tomcat.websocket.server.WsFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=21, line=53 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=135, line=189 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=99, line=162 (Compiled frame)
 - com.yonyou.yms.filter.YmsInvocationInfoProxyFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=8, line=31 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=135, line=189 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=99, line=162 (Compiled frame)
 - com.yonyou.iuap.disconf.web.filter.DataCenterThreadLocalFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=8, line=52 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=135, line=189 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=99, line=162 (Compiled frame)
 - ch.qos.logback.classic.helpers.MDCInsertingServletFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=8, line=49 (Compiled frame)
 - com.yonyou.iuap.ucf.log.filter.UcfLogFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=11, line=29 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=135, line=189 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=99, line=162 (Compiled frame)
 - org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, javax.servlet.FilterChain) @bci=95, line=113 (Compiled frame)
 - org.springframework.web.filter.OncePerRequestFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=147, line=117 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=135, line=189 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=99, line=162 (Compiled frame)
 - org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=50, line=61 (Compiled frame)
 - org.apache.shiro.web.servlet.AdviceFilter.executeChain(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=3, line=108 (Compiled frame)
 - org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=64, line=137 (Compiled frame)
 - org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=120, line=154 (Compiled frame)
 - org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=130, line=66 (Compiled frame)
 - org.apache.shiro.web.servlet.AdviceFilter.executeChain(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=3, line=108 (Compiled frame)
 - org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=64, line=137 (Compiled frame)
 - org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=120, line=154 (Compiled frame)
 - org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=130, line=66 (Compiled frame)
 - org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=13, line=458 (Compiled frame)
 - org.apache.shiro.web.servlet.AbstractShiroFilter$1.call() @bci=31, line=373 (Compiled frame)
 - org.apache.shiro.subject.support.SubjectCallable.doCall(java.util.concurrent.Callable) @bci=1, line=90 (Compiled frame)
 - org.apache.shiro.subject.support.SubjectCallable.call() @bci=14, line=83 (Compiled frame)
 - org.apache.shiro.subject.support.DelegatingSubject.execute(java.util.concurrent.Callable) @bci=7, line=387 (Compiled frame)
 - org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=47, line=370 (Compiled frame)
 - org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=120, line=154 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=135, line=189 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=99, line=162 (Compiled frame)
 - com.yonyou.cloud.auth.sdk.service.filter.SignVerifyFilter.verifyToken(javax.servlet.FilterChain, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.String) @bci=468, line=342 (Compiled frame)
 - com.yonyou.cloud.auth.sdk.service.filter.SignVerifyFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=400, line=228 (Compiled frame)
 - com.yonyou.iuap.disconf.web.filter.SignVerifyInnerFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=62, line=27 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=135, line=189 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=99, line=162 (Compiled frame)
 - org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, javax.servlet.FilterChain) @bci=53, line=201 (Compiled frame)
 - org.springframework.web.filter.OncePerRequestFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=147, line=117 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=135, line=189 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=99, line=162 (Compiled frame)
 - com.yonyou.iuap.yms.console.YmsConsoleContextFilter.doFilter(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, javax.servlet.FilterChain) @bci=223, line=45 (Compiled frame)
 - javax.servlet.http.HttpFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=78, line=57 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=135, line=189 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=99, line=162 (Compiled frame)
 - org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, javax.servlet.FilterChain) @bci=53, line=201 (Compiled frame)
 - org.springframework.web.filter.OncePerRequestFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=147, line=117 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=135, line=189 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=99, line=162 (Compiled frame)
 - com.yonyou.iuap.disconf.web.filter.ThreadLocalContextCleanerFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=3, line=25 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=135, line=189 (Compiled frame)
 - org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=99, line=162 (Compiled frame)
 - org.apache.catalina.core.StandardWrapperValve.invoke(org.apache.catalina.connector.Request, org.apache.catalina.connector.Response) @bci=514, line=177 (Compiled frame)
 - org.apache.catalina.core.StandardContextValve.invoke(org.apache.catalina.connector.Request, org.apache.catalina.connector.Response) @bci=169, line=97 (Compiled frame)
 - org.apache.catalina.authenticator.AuthenticatorBase.invoke(org.apache.catalina.connector.Request, org.apache.catalina.connector.Response) @bci=260, line=541 (Compiled frame)
 - org.apache.catalina.core.StandardHostValve.invoke(org.apache.catalina.connector.Request, org.apache.catalina.connector.Response) @bci=128, line=135 (Compiled frame)
 - org.apache.catalina.valves.ErrorReportValve.invoke(org.apache.catalina.connector.Request, org.apache.catalina.connector.Response) @bci=6, line=92 (Compiled frame)
 - org.apache.catalina.core.StandardEngineValve.invoke(org.apache.catalina.connector.Request, org.apache.catalina.connector.Response) @bci=59, line=78 (Compiled frame)
 - org.apache.catalina.valves.AbstractAccessLogValve.invoke(org.apache.catalina.connector.Request, org.apache.catalina.connector.Response) @bci=66, line=687 (Compiled frame)
 - org.apache.catalina.connector.CoyoteAdapter.service(org.apache.coyote.Request, org.apache.coyote.Response) @bci=203, line=360 (Compiled frame)
 - org.apache.coyote.http11.Http11Processor.service(org.apache.tomcat.util.net.SocketWrapperBase) @bci=796, line=399 (Compiled frame)
 - org.apache.coyote.AbstractProcessorLight.process(org.apache.tomcat.util.net.SocketWrapperBase, org.apache.tomcat.util.net.SocketEvent) @bci=170, line=65 (Compiled frame)
 - org.apache.coyote.AbstractProtocol$ConnectionHandler.process(org.apache.tomcat.util.net.SocketWrapperBase, org.apache.tomcat.util.net.SocketEvent) @bci=489, line=891 (Compiled frame)
 - org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun() @bci=249, line=1784 (Compiled frame)
 - org.apache.tomcat.util.net.SocketProcessorBase.run() @bci=21, line=49 (Compiled frame)
 - org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker) @bci=92, line=1191 (Interpreted frame)
 - org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run() @bci=5, line=659 (Interpreted frame)
 - org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run() @bci=4, line=61 (Interpreted frame)
 - java.lang.Thread.run() @bci=11, line=750 (Interpreted frame)


Thread 294: (state = BLOCKED)
 - sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
 - java.util.concurrent.locks.LockSupport.parkNanos(java.lang.Object, long) @bci=20, line=215 (Compiled frame)
 - java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(long) @bci=78, line=2078 (Compiled frame)
 - java.util.concurrent.LinkedBlockingQueue.poll(long, java.util.concurrent.TimeUnit) @bci=62, line=467 (Compiled frame)
 - org.apache.tomcat.util.threads.TaskQueue.poll(long, java.util.concurrent.TimeUnit) @bci=3, line=123 (Compiled frame)
 - org.apache.tomcat.util.threads.TaskQueue.poll(long, java.util.concurrent.TimeUnit) @bci=3, line=33 (Compiled frame)
 - org.apache.tomcat.util.threads.ThreadPoolExecutor.getTask() @bci=132, line=1113 (Compiled frame)
 - org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker) @bci=26, line=1176 (Interpreted frame)
 - org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run() @bci=5, line=659 (Interpreted frame)
 - org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run() @bci=4, line=61 (Interpreted frame)
 - java.lang.Thread.run() @bci=11, line=750 (Interpreted frame)


... 中间省略 ...

Thread 275: (state = IN_NATIVE)
 - java.net.SocketInputStream.socketRead0(java.io.FileDescriptor, byte[], int, int, int) @bci=0 (Compiled frame; information may be imprecise)
 - java.net.SocketInputStream.socketRead(java.io.FileDescriptor, byte[], int, int, int) @bci=8, line=116 (Compiled frame)
 - java.net.SocketInputStream.read(byte[], int, int, int) @bci=117, line=171 (Compiled frame)
 - java.net.SocketInputStream.read(byte[], int, int) @bci=11, line=141 (Compiled frame)
 - java.net.SocketInputStream.read(byte[]) @bci=5, line=127 (Compiled frame)
 - redis.clients.jedis.util.RedisInputStream.ensureFill() @bci=20, line=199 (Compiled frame)
 - redis.clients.jedis.util.RedisInputStream.readByte() @bci=1, line=43 (Compiled frame)
 - redis.clients.jedis.Protocol.process(redis.clients.jedis.util.RedisInputStream) @bci=1, line=165 (Compiled frame)
 - redis.clients.jedis.Protocol.read(redis.clients.jedis.util.RedisInputStream) @bci=1, line=230 (Compiled frame)
 - redis.clients.jedis.Connection.readProtocolWithCheckingBroken() @bci=21, line=352 (Compiled frame)
 - redis.clients.jedis.Connection.getBinaryMultiBulkReply() @bci=5, line=304 (Interpreted frame)
 - redis.clients.jedis.BinaryJedis.xread(int, long, java.util.Map) @bci=26, line=4843 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisStreamCommands.lambda$xRead$16(int, long, org.springframework.data.redis.connection.stream.StreamOffset[], redis.clients.jedis.Jedis) @bci=8, line=337 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisStreamCommands$$Lambda$3265.apply(redis.clients.jedis.Jedis) @bci=13 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisInvoker$$Lambda$3270.apply(java.lang.Object) @bci=8 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisConnection.lambda$doInvoke$2(java.util.function.Function, boolean, org.springframework.core.convert.converter.Converter, java.util.function.Supplier, java.util.function.Function, redis.clients.jedis.Jedis) @bci=106, line=176 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisConnection$$Lambda$3167.apply(java.lang.Object) @bci=28 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisConnection.doWithJedis(java.util.function.Function) @bci=5, line=799 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisConnection.doInvoke(boolean, java.util.function.Function, java.util.function.Function, org.springframework.core.convert.converter.Converter, java.util.function.Supplier) @bci=14, line=160 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisConnection.lambda$new$0(java.util.function.Function, java.util.function.Function, org.springframework.core.convert.converter.Converter, java.util.function.Supplier) @bci=7, line=69 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisConnection$$Lambda$3159.doInvoke(java.util.function.Function, java.util.function.Function, org.springframework.core.convert.converter.Converter, java.util.function.Supplier) @bci=9 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisInvoker$Synchronizer.invoke(java.util.function.Function, java.util.function.Function, org.springframework.core.convert.converter.Converter, java.util.function.Supplier) @bci=6, line=1027 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisInvoker$DefaultSingleInvocationSpec.getOrElse(org.springframework.core.convert.converter.Converter, java.util.function.Supplier) @bci=20, line=946 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisStreamCommands.xRead(org.springframework.data.redis.connection.stream.StreamReadOptions, org.springframework.data.redis.connection.stream.StreamOffset[]) @bci=107, line=338 (Interpreted frame)
 - org.springframework.data.redis.stream.DefaultStreamMessageListenerContainer.lambda$null$5(byte[], org.springframework.data.redis.connection.stream.ReadOffset, org.springframework.data.redis.connection.RedisConnection) @bci=22, line=263 (Interpreted frame)
 - org.springframework.data.redis.stream.DefaultStreamMessageListenerContainer$$Lambda$3260.doInRedis(org.springframework.data.redis.connection.RedisConnection) @bci=13 (Interpreted frame)
 - org.springframework.data.redis.core.RedisTemplate.execute(org.springframework.data.redis.core.RedisCallback, boolean, boolean) @bci=94, line=224 (Interpreted frame)
 - org.springframework.data.redis.core.RedisTemplate.execute(org.springframework.data.redis.core.RedisCallback, boolean) @bci=4, line=191 (Interpreted frame)
 - org.springframework.data.redis.core.RedisTemplate.execute(org.springframework.data.redis.core.RedisCallback) @bci=6, line=178 (Interpreted frame)
 - org.springframework.data.redis.stream.DefaultStreamMessageListenerContainer.lambda$getReadFunction$6(byte[], org.springframework.data.redis.connection.stream.ReadOffset) @bci=12, line=262 (Interpreted frame)
 - org.springframework.data.redis.stream.DefaultStreamMessageListenerContainer$$Lambda$3251.apply(java.lang.Object) @bci=12 (Interpreted frame)
 - org.springframework.data.redis.stream.StreamPollTask.readRecords() @bci=11, line=166 (Interpreted frame)
 - org.springframework.data.redis.stream.StreamPollTask.doLoop() @bci=5, line=147 (Interpreted frame)
 - org.springframework.data.redis.stream.StreamPollTask.run() @bci=20, line=132 (Interpreted frame)
 - java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=95, line=1149 (Interpreted frame)
 - java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5, line=624 (Interpreted frame)
 - java.lang.Thread.run() @bci=11, line=750 (Interpreted frame)


Thread 274: (state = IN_NATIVE)
 - java.net.SocketInputStream.socketRead0(java.io.FileDescriptor, byte[], int, int, int) @bci=0 (Compiled frame; information may be imprecise)
 - java.net.SocketInputStream.socketRead(java.io.FileDescriptor, byte[], int, int, int) @bci=8, line=116 (Compiled frame)
 - java.net.SocketInputStream.read(byte[], int, int, int) @bci=117, line=171 (Compiled frame)
 - java.net.SocketInputStream.read(byte[], int, int) @bci=11, line=141 (Compiled frame)
 - java.net.SocketInputStream.read(byte[]) @bci=5, line=127 (Compiled frame)
 - redis.clients.jedis.util.RedisInputStream.ensureFill() @bci=20, line=199 (Compiled frame)
 - redis.clients.jedis.util.RedisInputStream.readByte() @bci=1, line=43 (Compiled frame)
 - redis.clients.jedis.Protocol.process(redis.clients.jedis.util.RedisInputStream) @bci=1, line=165 (Compiled frame)
 - redis.clients.jedis.Protocol.read(redis.clients.jedis.util.RedisInputStream) @bci=1, line=230 (Compiled frame)
 - redis.clients.jedis.Connection.readProtocolWithCheckingBroken() @bci=21, line=352 (Compiled frame)
 - redis.clients.jedis.Connection.getBinaryMultiBulkReply() @bci=5, line=304 (Interpreted frame)
 - redis.clients.jedis.BinaryJedis.xread(int, long, java.util.Map) @bci=26, line=4843 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisStreamCommands.lambda$xRead$16(int, long, org.springframework.data.redis.connection.stream.StreamOffset[], redis.clients.jedis.Jedis) @bci=8, line=337 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisStreamCommands$$Lambda$3265.apply(redis.clients.jedis.Jedis) @bci=13 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisInvoker$$Lambda$3270.apply(java.lang.Object) @bci=8 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisConnection.lambda$doInvoke$2(java.util.function.Function, boolean, org.springframework.core.convert.converter.Converter, java.util.function.Supplier, java.util.function.Function, redis.clients.jedis.Jedis) @bci=106, line=176 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisConnection$$Lambda$3167.apply(java.lang.Object) @bci=28 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisConnection.doWithJedis(java.util.function.Function) @bci=5, line=799 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisConnection.doInvoke(boolean, java.util.function.Function, java.util.function.Function, org.springframework.core.convert.converter.Converter, java.util.function.Supplier) @bci=14, line=160 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisConnection.lambda$new$0(java.util.function.Function, java.util.function.Function, org.springframework.core.convert.converter.Converter, java.util.function.Supplier) @bci=7, line=69 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisConnection$$Lambda$3159.doInvoke(java.util.function.Function, java.util.function.Function, org.springframework.core.convert.converter.Converter, java.util.function.Supplier) @bci=9 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisInvoker$Synchronizer.invoke(java.util.function.Function, java.util.function.Function, org.springframework.core.convert.converter.Converter, java.util.function.Supplier) @bci=6, line=1027 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisInvoker$DefaultSingleInvocationSpec.getOrElse(org.springframework.core.convert.converter.Converter, java.util.function.Supplier) @bci=20, line=946 (Interpreted frame)
 - org.springframework.data.redis.connection.jedis.JedisStreamCommands.xRead(org.springframework.data.redis.connection.stream.StreamReadOptions, org.springframework.data.redis.connection.stream.StreamOffset[]) @bci=107, line=338 (Interpreted frame)
 - org.springframework.data.redis.stream.DefaultStreamMessageListenerContainer.lambda$null$5(byte[], org.springframework.data.redis.connection.stream.ReadOffset, org.springframework.data.redis.connection.RedisConnection) @bci=22, line=263 (Interpreted frame)
 - org.springframework.data.redis.stream.DefaultStreamMessageListenerContainer$$Lambda$3260.doInRedis(org.springframework.data.redis.connection.RedisConnection) @bci=13 (Interpreted frame)
 - org.springframework.data.redis.core.RedisTemplate.execute(org.springframework.data.redis.core.RedisCallback, boolean, boolean) @bci=94, line=224 (Interpreted frame)
 - org.springframework.data.redis.core.RedisTemplate.execute(org.springframework.data.redis.core.RedisCallback, boolean) @bci=4, line=191 (Interpreted frame)
 - org.springframework.data.redis.core.RedisTemplate.execute(org.springframework.data.redis.core.RedisCallback) @bci=6, line=178 (Interpreted frame)
 - org.springframework.data.redis.stream.DefaultStreamMessageListenerContainer.lambda$getReadFunction$6(byte[], org.springframework.data.redis.connection.stream.ReadOffset) @bci=12, line=262 (Interpreted frame)
 - org.springframework.data.redis.stream.DefaultStreamMessageListenerContainer$$Lambda$3251.apply(java.lang.Object) @bci=12 (Interpreted frame)
 - org.springframework.data.redis.stream.StreamPollTask.readRecords() @bci=11, line=166 (Interpreted frame)
 - org.springframework.data.redis.stream.StreamPollTask.doLoop() @bci=5, line=147 (Interpreted frame)
 - org.springframework.data.redis.stream.StreamPollTask.run() @bci=20, line=132 (Interpreted frame)
 - java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=95, line=1149 (Interpreted frame)
 - java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5, line=624 (Interpreted frame)
 - java.lang.Thread.run() @bci=11, line=750 (Interpreted frame)


Thread 273: (state = BLOCKED)
 - sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
 - java.util.concurrent.locks.LockSupport.parkNanos(java.lang.Object, long) @bci=20, line=215 (Compiled frame)
 - java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(long) @bci=78, line=2078 (Compiled frame)
 - java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=124, line=1093 (Compiled frame)
 - java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=1, line=809 (Compiled frame)
 - java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149, line=1074 (Compiled frame)
 - java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26, line=1134 (Interpreted frame)
 - java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5, line=624 (Interpreted frame)
 - java.lang.Thread.run() @bci=11, line=750 (Interpreted frame)


Thread 272: (state = BLOCKED)
 - sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
 - java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14, line=175 (Compiled frame)
 - java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42, line=2039 (Compiled frame)
 - java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=100, line=1088 (Interpreted frame)
 - java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=1, line=809 (Compiled frame)
 - java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149, line=1074 (Compiled frame)
 - java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26, line=1134 (Interpreted frame)
 - java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5, line=624 (Interpreted frame)
 - java.lang.Thread.run() @bci=11, line=750 (Interpreted frame)


Thread 271: (state = BLOCKED)
 - sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
 - java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14, line=175 (Compiled frame)
 - java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(java.util.concurrent.SynchronousQueue$TransferStack$SNode, boolean, long) @bci=144, line=458 (Interpreted frame)
 - java.util.concurrent.SynchronousQueue$TransferStack.transfer(java.lang.Object, boolean, long) @bci=102, line=362 (Interpreted frame)
 - java.util.concurrent.SynchronousQueue.take() @bci=7, line=924 (Interpreted frame)
 - java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149, line=1074 (Compiled frame)
 - java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26, line=1134 (Interpreted frame)
 - java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5, line=624 (Interpreted frame)
 - java.lang.Thread.run() @bci=11, line=750 (Interpreted frame)


Thread 270: (state = BLOCKED)
 - sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
 - java.util.concurrent.locks.LockSupport.parkNanos(java.lang.Object, long) @bci=20, line=215 (Interpreted frame)
 - java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(long) @bci=78, line=2078 (Interpreted frame)
 - java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=124, line=1093 (Interpreted frame)
 - java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=1, line=809 (Compiled frame)
 - java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149, line=1074 (Compiled frame)
 - java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26, line=1134 (Interpreted frame)
 - java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5, line=624 (Interpreted frame)
 - java.lang.Thread.run() @bci=11, line=750 (Interpreted frame)


Thread 269: (state = BLOCKED)
 - sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
 - java.util.concurrent.locks.LockSupport.parkNanos(java.lang.Object, long) @bci=20, line=215 (Compiled frame)
 - java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(long) @bci=78, line=2078 (Compiled frame)
 - java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=124, line=1093 (Compiled frame)
 - java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=1, line=809 (Compiled frame)
 - java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149, line=1074 (Compiled frame)
 - java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26, line=1134 (Interpreted frame)
 - java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5, line=624 (Interpreted frame)
 - java.lang.Thread.run() @bci=11, line=750 (Interpreted frame)


Thread 268: (state = BLOCKED)
 - java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
 - java.lang.Object.wait(long, int) @bci=46, line=460 (Interpreted frame)
 - okio.AsyncTimeout$Companion.awaitTimeout$okio() @bci=108, line=316 (Interpreted frame)
 - okio.AsyncTimeout$Watchdog.run() @bci=27, line=187 (Interpreted frame)


... 中间省略 ...

Thread 189: (state = BLOCKED)
 - sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
 - java.util.concurrent.locks.LockSupport.parkNanos(java.lang.Object, long) @bci=20, line=215 (Compiled frame)
 - java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(long) @bci=78, line=2078 (Compiled frame)
 - java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=124, line=1093 (Compiled frame)
 - java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=1, line=809 (Compiled frame)
 - java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149, line=1074 (Compiled frame)
 - java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26, line=1134 (Interpreted frame)
 - java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5, line=624 (Interpreted frame)
 - org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run() @bci=4, line=61 (Interpreted frame)
 - java.lang.Thread.run() @bci=11, line=750 (Interpreted frame)


你可以通过这些堆栈信息,分析当时程序在做什么。

 

3、jmap


使用jmap工具检查core文件,打印出内存的映射或者堆栈内存的详细信息

 

[online-iuap-yms-console-944ccd786-lv4gg root:/data]# jmap -J-d64 /usr/local/java/bin/java core.java.0.13f526e86d594c84b8d1e81350652513.568426.1684721501000000000000 
Attaching to core core.java.0.13f526e86d594c84b8d1e81350652513.568426.1684721501000000000000 from executable /usr/local/java/bin/java, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.345-b01
0x0000aaac9b4b0000	68K	/usr/local/java/bin/java
0x0000fffc69720000	131K	/usr/glibc-compat/lib/libpthread.so.0
0x0000fffc696e0000	456K	/usr/local/java/bin/../lib/aarch64/jli/libjli.so
0x0000fffc696b0000	66K	/usr/glibc-compat/lib/libdl.so.2
0x0000fffc69520000	1487K	/usr/glibc-compat/lib/libc.so.6
0x0000fffc69790000	197K	/lib/ld-linux-aarch64.so.1
0x0000fffc68900000	14767K	/usr/local/java/jre/lib/aarch64/server/libjvm.so
0x0000fffc68840000	642K	/usr/glibc-compat/lib/libm.so.6
0x0000fffc68780000	66K	/usr/glibc-compat/lib/librt.so.1
0x0000fffc68750000	72K	/usr/local/java/jre/lib/aarch64/libverify.so
0x0000fffc68700000	238K	/usr/local/java/jre/lib/aarch64/libjava.so
0x0000fffc686c0000	66K	/usr/glibc-compat/lib/libnss_files.so.2
0x0000fffc68680000	145K	/usr/local/java/jre/lib/aarch64/libzip.so
0x0000fffc51340000	89K	/usr/local/java/jre/lib/aarch64/libnio.so
0x0000fffc51300000	152K	/usr/local/java/jre/lib/aarch64/libnet.so
0x0000fffc50700000	298K	/usr/local/java/jre/lib/aarch64/libsunec.so
0x0000fffc506c0000	69K	/usr/lib/libgcc_s.so.1
0x0000fffc50610000	606K	/lib/libc.musl-aarch64.so.1
0x0000fffc503c0000	66K	/usr/glibc-compat/lib/libnss_dns.so.2
0x0000fffc50380000	130K	/usr/glibc-compat/lib/libresolv.so.2
0x0000fffc4fb10000	79K	/usr/local/java/jre/lib/aarch64/libmanagement.so
0x0000fffc36500000	2287K	/usr/lib/libcrypto.so
[online-iuap-yms-console-944ccd786-lv4gg root:/data]#

 

 

注意:如果你的java进程运行在容器里面,然后生成了core dump文件,在操作系统的目录里面,建议,将core dump文件拷贝到容器里面,然后进行分析。

 

大多数的基础镜像里面是没有gdb工具的,可以考虑增加,或者使用jmap、jstack来分析。

posted @ 2023-05-26 10:52  Zhai_David  阅读(5124)  评论(0编辑  收藏  举报