怎么分析一个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来分析。