java crach 日志解析
在java开发中,或许会出现如下错误,这种错误大多出现在开发中涉及本地代码的地方。
#
# a fatal error has been detected by the java runtime environment:
#
# exception_access_violation (0xc0000005) at pc=0x0000000057441b5f, pid=9272, tid=0x0000000000004534
# 信号名称 信号码 程序计数器的值 进程号 线程号
# jre version: java(tm) se runtime environment (8.0_171-b11) (build 1.8.0_171-b11)
# java vm: java hotspot(tm) 64-bit server vm (25.171-b11 mixed mode windows-amd64 compressed oops)
# problematic frame:
# v [jvm.dll+0xc1b5f]
问题帧信息(和pc等价,但表达方式为 本地库+偏移量)
#
# failed to write core dump. minidumps are not enabled by default on client versions of windows
#
# if you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#
这种错误主要来源:
- 自定义本地方法有误,有不合逻辑,很大可能是参数传递有误(或者参数本身有误)
- 虚拟机内存问题,根据日志进行gc分析,合理配置内存参数
- 虚拟机本身错误(可能性很小)
问题分析参考:https://www.cnblogs.com/yelao/p/9814467.html
# # a fatal error has been detected by the java runtime environment: # # exception_access_violation (0xc0000005) at pc=0x0000000057441b5f, pid=9272, tid=0x0000000000004534 # 信号名称 信号码 程序计数器的值 进程号 线程号 # jre version: java(tm) se runtime environment (8.0_171-b11) (build 1.8.0_171-b11) # java vm: java hotspot(tm) 64-bit server vm (25.171-b11 mixed mode windows-amd64 compressed oops) # problematic frame: # v [jvm.dll+0xc1b5f] 问题帧信息(和pc等价,但表达方式为 本地库+偏移量) # # failed to write core dump. minidumps are not enabled by default on client versions of windows # # if you would like to submit a bug report, please visit: # http://bugreport.java.com/bugreport/crash.jsp # --------------- t h r e a d --------------- //当前线程 current thread (0x0000000003422800): javathread "main" [_thread_in_vm, id=17716, stack(0x0000000003130000,0x0000000003230000)] 指针 线程类型 名 何种线程 线程id 栈区间 //导致虚拟机终止的非预期的信号信息 siginfo: exceptioncode=0xc0000005, reading address 0x0000000000000240 信号码 出问题的指针 registers: //寄存器上下文 rax=0x000000001821ba50, rbx=0x00000000033184c0, rcx=0x000000000000000a, rdx=0x000000000000000b rsp=0x000000000322ca30, rbp=0x0000000003422800, rsi=0x0000000003422800, rdi=0x0000000000000220 r8 =0x000000000000000b, r9 =0x00000000033184c0, r10=0x0000000000000000, r11=0x0000000000000005 r12=0x0000000000000006, r13=0x000000000322cb10, r14=0x0000000000000001, r15=0x000000000322cbb0 rip=0x0000000057441b5f, eflags=0x0000000000010202 top of stack: (sp=0x000000000322ca30) //栈顶程序计数器旁的操作吗,可以被反汇编成系统崩溃前的指令 0x000000000322ca30: 0000000003472450 00000000575b7021 0x000000000322ca40: 0000000000000000 0000000057597b75 0x000000000322ca50: 0000000000000000 0000000019cf8f3b 0x000000000322ca60: 0000670b2094b49f 00007ff94fa70428 0x000000000322ca70: 0000000000000010 0000000000000010 0x000000000322ca80: 0000000000000000 0000000000000000 0x000000000322ca90: 000000000322cbb0 00000000033184c0 0x000000000322caa0: 000000000322cda8 000000000322cc60 0x000000000322cab0: 0000000003422800 00000000574431c7 0x000000000322cac0: 0000000017b11288 0000000003422800 0x000000000322cad0: 0000000100002368 0000000003422800 0x000000000322cae0: 0000000100001ef8 00007ff94be84301 0x000000000322caf0: 0000000003422800 00000000013f0f00 0x000000000322cb00: 0000000017b11288 0000000003422800 0x000000000322cb10: 0000000017b11288 0000000003422800 0x000000000322cb20: 000000000322cf08 0000000000000000 instructions: (pc=0x0000000057441b5f)//出异常处的指令,可反编译为汇编帮助分析 0x0000000057441b3f: f8 48 89 44 0a f0 45 3b 01 7c e6 41 ff 09 48 85 0x0000000057441b4f: ff 0f 84 7c 02 00 00 45 84 f6 0f 84 23 01 00 00 0x0000000057441b5f: 8b 47 20 c1 e8 0a a8 01 0f 84 15 01 00 00 4c 8b 0x0000000057441b6f: a5 30 01 00 00 48 8b 1d 8d 73 73 00 49 8b 44 24 register to memory mapping: //寄存器和内存映射信息 rax=0x000000001821ba50 is an unknown value rbx=0x00000000033184c0 is an unknown value rcx=0x000000000000000a is an unknown value rdx=0x000000000000000b is an unknown value rsp=0x000000000322ca30 is pointing into the stack for thread: 0x0000000003422800 rbp=0x0000000003422800 is a thread rsi=0x0000000003422800 is a thread rdi=0x0000000000000220 is an unknown value r8 =0x000000000000000b is an unknown value r9 =0x00000000033184c0 is an unknown value r10=0x0000000000000000 is an unknown value r11=0x0000000000000005 is an unknown value r12=0x0000000000000006 is an unknown value r13=0x000000000322cb10 is pointing into the stack for thread: 0x0000000003422800 r14=0x0000000000000001 is an unknown value r15=0x000000000322cbb0 is pointing into the stack for thread: 0x0000000003422800 //线程栈。包含了地址,栈顶,栈计数器和线程尚未使用的栈信息 stack: [0x0000000003130000,0x0000000003230000], sp=0x000000000322ca30, free space=1010k native frames: (j=compiled java code, j=interpreted, vv=vm code, c=native code) v [jvm.dll+0xc1b5f] v [jvm.dll+0xc31c7] v [jvm.dll+0x215877] v [jvm.dll+0x215bea] v [jvm.dll+0x7cad5] v [jvm.dll+0x7d164] v [jvm.dll+0x7e836] v [jvm.dll+0x7a2f7] v [jvm.dll+0x5e02f] v [jvm.dll+0x7c544] v [jvm.dll+0x192731] v [jvm.dll+0x192acb] c [java.dll+0x1ead] c [ag.dll+0x190e] c 0x0000000003538c67 java frames: (j=compiled java code, j=interpreted, vv=vm code) j wqz.zoom.instrument.nativeagent.another_foo(ljava/lang/string;[biiljava/security/protectiondomain;ljava/lang/string;)ljava/lang/class;+0 j java.lang.classloader.defineclass1(ljava/lang/string;[biiljava/security/protectiondomain;ljava/lang/string;)ljava/lang/class;+34 j java.lang.classloader.defineclass(ljava/lang/string;[biiljava/security/protectiondomain;)ljava/lang/class;+27 j java.security.secureclassloader.defineclass(ljava/lang/string;[biiljava/security/codesource;)ljava/lang/class;+12 j java.net.urlclassloader.defineclass(ljava/lang/string;lsun/misc/resource;)ljava/lang/class;+138 j java.net.urlclassloader.access$100(ljava/net/urlclassloader;ljava/lang/string;lsun/misc/resource;)ljava/lang/class;+3 j java.net.urlclassloader$1.run()ljava/lang/class;+43 j java.net.urlclassloader$1.run()ljava/lang/object;+1 v ~stubroutines::call_stub j java.security.accesscontroller.doprivileged(ljava/security/privilegedexceptionaction;ljava/security/accesscontrolcontext;)ljava/lang/object;+0 j java.net.urlclassloader.findclass(ljava/lang/string;)ljava/lang/class;+13 j java.lang.classloader.loadclass(ljava/lang/string;z)ljava/lang/class;+70 j sun.misc.launcher$appclassloader.loadclass(ljava/lang/string;z)ljava/lang/class;+81 j java.lang.classloader.loadclass(ljava/lang/string;)ljava/lang/class;+3 j sun.launcher.launcherhelper.checkandloadmain(ziljava/lang/string;)ljava/lang/class;+93 v ~stubroutines::call_stub --------------- p r o c e s s --------------- java threads: ( => current thread ) //线程信息 0x0000000019cc9800 javathread "service thread" daemon [_thread_blocked, id=26172, stack(0x000000001a4d0000,0x000000001a5d0000)] 0x0000000019cf8800 javathread "c1 compilerthread2" daemon [_thread_blocked, id=19348, stack(0x000000001a3d0000,0x000000001a4d0000)] 0x0000000019cc8800 javathread "c2 compilerthread1" daemon [_thread_blocked, id=13820, stack(0x000000001a2d0000,0x000000001a3d0000)] 0x0000000019cb1000 javathread "c2 compilerthread0" daemon [_thread_blocked, id=13952, stack(0x000000001a1d0000,0x000000001a2d0000)] 0x0000000018263000 javathread "attach listener" daemon [_thread_blocked, id=12732, stack(0x000000001a0d0000,0x000000001a1d0000)] 0x0000000019c1b800 javathread "signal dispatcher" daemon [_thread_blocked, id=24360, stack(0x0000000019fd0000,0x000000001a0d0000)] 0x000000001823c800 javathread "finalizer" daemon [_thread_blocked, id=9820, stack(0x0000000019ad0000,0x0000000019bd0000)] 0x0000000003514000 javathread "reference handler" daemon [_thread_blocked, id=10248, stack(0x00000000199d0000,0x0000000019ad0000)] =>0x0000000003422800 javathread "main" [_thread_in_vm, id=17716, stack(0x0000000003130000,0x0000000003230000)] other threads: //其他线程 0x0000000018218000 vmthread [stack: 0x00000000198d0000,0x00000000199d0000] [id=10868] 0x0000000019d8b800 watcherthread [stack: 0x000000001a5d0000,0x000000001a6d0000] [id=3052] //虚拟机状态 vm state:not at safepoint (normal execution) //not at a safepoint:正常运行状态; //at safepoint:所有线程都因为虚拟机等待状态而阻塞,等待一个虚拟机操作完成; //synchronizing:一个特殊的虚拟机操作,要求虚拟机内的其它线程保持等待状态 //虚拟机的mutex和monitor目前没有被线程持有。mutex是虚拟机内部的锁,而monitor则关联到了java对象 vm mutex/monitor currently owned by a thread: none heap://堆信息。新生代、老生代、永久代 psyounggen total 37888k, used 7316k [0x00000000d6000000, 0x00000000d8a00000, 0x0000000100000000) eden space 32768k, 22% used [0x00000000d6000000,0x00000000d6725040,0x00000000d8000000) from space 5120k, 0% used [0x00000000d8500000,0x00000000d8500000,0x00000000d8a00000) to space 5120k, 0% used [0x00000000d8000000,0x00000000d8000000,0x00000000d8500000) paroldgen total 86016k, used 0k [0x0000000082000000, 0x0000000087400000, 0x00000000d6000000) object space 86016k, 0% used [0x0000000082000000,0x0000000082000000,0x0000000087400000) metaspace used 4343k, capacity 5654k, committed 6016k, reserved 1056768k class space used 473k, capacity 522k, committed 640k, reserved 1048576k card table byte_map: [0x00000000128e0000,0x0000000012ce0000] byte_map_base: 0x00000000124d0000 marking bits: (parmarkbitmap*) 0x0000000057ba08c0 begin bits: [0x0000000013580000, 0x0000000015500000) end bits: [0x0000000015500000, 0x0000000017480000) polling page: 0x0000000000f60000 //代码缓存,这是一块用于编译和保存本地代码的内存,注意是本地代码,它和permgen(永久代)是不一样的,永久带是用来存放java类定义的。 codecache: size=245760kb used=1114kb max_used=1116kb free=244645kb bounds [0x0000000003520000, 0x0000000003790000, 0x0000000012520000] total_blobs=292 nmethods=19 adapters=187 compilation: enabled compilation events (10 events): event: 0.192 thread 0x0000000019cc8800 nmethod 1 0x0000000003636410 code [0x0000000003636540, 0x00000000036365d8] event: 0.192 thread 0x0000000019cc8800 9 4 java.lang.string::charat (29 bytes) event: 0.192 thread 0x0000000019cb1000 nmethod 11 0x0000000003633d50 code [0x0000000003633ea0, 0x0000000003634058] event: 0.193 thread 0x0000000019cc8800 nmethod 9 0x0000000003633a50 code [0x0000000003633ba0, 0x0000000003633c58] event: 0.194 thread 0x0000000019cf8800 17 3 java.lang.abstractstringbuilder::append (50 bytes) event: 0.194 thread 0x0000000019cf8800 nmethod 17 0x0000000003636f50 code [0x0000000003637120, 0x0000000003637878] event: 0.194 thread 0x0000000019cf8800 18 3 sun.nio.cs.ext.doublebyte$encoder::encodechar (21 bytes) event: 0.194 thread 0x0000000019cf8800 nmethod 18 0x0000000003636ad0 code [0x0000000003636c40, 0x0000000003636df0] event: 0.195 thread 0x0000000019cf8800 19 3 java.util.arrays::copyofrange (63 bytes) event: 0.196 thread 0x0000000019cf8800 nmethod 19 0x0000000003634750 code [0x0000000003634960, 0x0000000003635498] gc heap history (0 events)://gc历史纪录 no events deoptimization events (0 events)://非优化事件 no events classes redefined (1 events): //重定义 event: 0.186 thread 0x0000000018218000 redefined class name=java.lang.classloader, count=1 internal exceptions (9 events)://内部异常 event: 0.030 thread 0x0000000003422800 exception <a 'java/lang/nosuchmethoderror': method sun.misc.unsafe.defineclass(ljava/lang/string;[bii)ljava/lang/class; name or signature does not match> (0x00000000d6007cb0) thrown at [c:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u171\10807\hotspot event: 0.030 thread 0x0000000003422800 exception <a 'java/lang/nosuchmethoderror': method sun.misc.unsafe.prefetchread(ljava/lang/object;j)v name or signature does not match> (0x00000000d6007f98) thrown at [c:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u171\10807\hotspot\src\share\vm\prim event: 0.071 thread 0x0000000003422800 exception <a 'java/util/zip/zipexception'> (0x00000000d60da258) thrown at [c:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u171\10807\hotspot\src\share\vm\prims\jni.cpp, line 709] event: 0.071 thread 0x0000000003422800 exception <a 'java/security/privilegedactionexception'> (0x00000000d60da908) thrown at [c:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u171\10807\hotspot\src\share\vm\prims\jvm.cpp, line 1435] event: 0.071 thread 0x0000000003422800 exception <a 'java/security/privilegedactionexception'> (0x00000000d60dab18) thrown at [c:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u171\10807\hotspot\src\share\vm\prims\jvm.cpp, line 1435] event: 0.140 thread 0x0000000003422800 exception <a 'java/security/privilegedactionexception'> (0x00000000d64faf48) thrown at [c:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u171\10807\hotspot\src\share\vm\prims\jvm.cpp, line 1435] event: 0.140 thread 0x0000000003422800 exception <a 'java/security/privilegedactionexception'> (0x00000000d64fb340) thrown at [c:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u171\10807\hotspot\src\share\vm\prims\jvm.cpp, line 1435] event: 0.140 thread 0x0000000003422800 exception <a 'java/security/privilegedactionexception'> (0x00000000d64fdc98) thrown at [c:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u171\10807\hotspot\src\share\vm\prims\jvm.cpp, line 1435] event: 0.140 thread 0x0000000003422800 exception <a 'java/security/privilegedactionexception'> (0x00000000d64fe090) thrown at [c:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u171\10807\hotspot\src\share\vm\prims\jvm.cpp, line 1435] events (10 events): event: 0.189 loading class sun/usagetracker/usagetrackerclient$3 event: 0.189 loading class sun/usagetracker/usagetrackerclient$3 done event: 0.191 loading class java/io/fileoutputstream$1 event: 0.191 loading class java/io/fileoutputstream$1 done event: 0.191 loading class sun/launcher/launcherhelper event: 0.191 loading class sun/launcher/launcherhelper done event: 0.191 loading class wqz/zoom/instrument/native event: 0.191 loading class wqz/zoom/instrument/native done event: 0.195 loading class wqz/zoom/instrument/nativeagent event: 0.195 loading class wqz/zoom/instrument/nativeagent done dynamic libraries: //内存映射:虚拟机崩溃时虚拟机内存列表区域 内存 - 区域 正在被使用的类库 0x00007ff79e9c0000 - 0x00007ff79e9f7000 c:\program files (x86)\common files\oracle\java\javapath\java.exe 0x00007ff94fa60000 - 0x00007ff94fc41000 c:\windows\system32\ntdll.dll 0x00007ff94d3f0000 - 0x00007ff94d4a2000 c:\windows\system32\kernel32.dll 0x00007ff94be30000 - 0x00007ff94c0a3000 c:\windows\system32\kernelbase.dll 0x00007ff94f8f0000 - 0x00007ff94f991000 c:\windows\system32\advapi32.dll 0x00007ff94cfd0000 - 0x00007ff94d06e000 c:\windows\system32\msvcrt.dll 0x00007ff94f9a0000 - 0x00007ff94f9fb000 c:\windows\system32\sechost.dll 0x00007ff94d1d0000 - 0x00007ff94d2f4000 c:\windows\system32\rpcrt4.dll 0x00007ff94f550000 - 0x00007ff94f6e0000 c:\windows\system32\user32.dll 0x00007ff94c330000 - 0x00007ff94c350000 c:\windows\system32\win32u.dll 0x00007ff94f6f0000 - 0x00007ff94f718000 c:\windows\system32\gdi32.dll 0x00007ff94c350000 - 0x00007ff94c4e2000 c:\windows\system32\gdi32full.dll 0x00007ff94cc00000 - 0x00007ff94cc9f000 c:\windows\system32\msvcp_win.dll 0x00007ff94c0b0000 - 0x00007ff94c1aa000 c:\windows\system32\ucrtbase.dll 0x00007ff93fe80000 - 0x00007ff9400e9000 c:\windows\winsxs\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.17134.345_none_fb429a5930656358\comctl32.dll 0x00007ff94f220000 - 0x00007ff94f543000 c:\windows\system32\combase.dll 0x00007ff94c2b0000 - 0x00007ff94c32a000 c:\windows\system32\bcryptprimitives.dll 0x00007ff94fa00000 - 0x00007ff94fa2d000 c:\windows\system32\imm32.dll 0x00000000570d0000 - 0x00000000571a2000 d:\java\jre1.8.0_171\bin\msvcr100.dll 0x0000000057380000 - 0x0000000057c20000 d:\java\jre1.8.0_171\bin\server\jvm.dll 0x00007ff94f8e0000 - 0x00007ff94f8e8000 c:\windows\system32\psapi.dll 0x00007ff93e120000 - 0x00007ff93e143000 c:\windows\system32\winmm.dll 0x00007ff942a10000 - 0x00007ff942a1a000 c:\windows\system32\version.dll 0x00007ff948900000 - 0x00007ff948909000 c:\windows\system32\wsock32.dll 0x00007ff94f1b0000 - 0x00007ff94f21c000 c:\windows\system32\ws2_32.dll 0x00007ff942d70000 - 0x00007ff942d9a000 c:\windows\system32\winmmbase.dll 0x00007ff94c260000 - 0x00007ff94c2a9000 c:\windows\system32\cfgmgr32.dll 0x0000000057290000 - 0x000000005729f000 d:\java\jre1.8.0_171\bin\verify.dll 0x0000000057260000 - 0x0000000057289000 d:\java\jre1.8.0_171\bin\java.dll 0x00000000570a0000 - 0x00000000570c3000 d:\java\jre1.8.0_171\bin\instrument.dll 0x0000000057240000 - 0x0000000057256000 d:\java\jre1.8.0_171\bin\zip.dll 0x00007ff94dcc0000 - 0x00007ff94f0ff000 c:\windows\system32\shell32.dll 0x00007ff94f100000 - 0x00007ff94f1a9000 c:\windows\system32\shcore.dll 0x00007ff94c4f0000 - 0x00007ff94cbfd000 c:\windows\system32\windows.storage.dll 0x00007ff94cf50000 - 0x00007ff94cfa1000 c:\windows\system32\shlwapi.dll 0x00007ff94be10000 - 0x00007ff94be21000 c:\windows\system32\kernel.appcore.dll 0x00007ff94bdd0000 - 0x00007ff94bdef000 c:\windows\system32\profapi.dll 0x00007ff94bd80000 - 0x00007ff94bdcc000 c:\windows\system32\powrprof.dll 0x00007ff94bd70000 - 0x00007ff94bd7a000 c:\windows\system32\fltlib.dll 0x000000006a100000 - 0x000000006a115000 d:\java\eeworkspace\javassist\ag.dll 0x0000000057070000 - 0x0000000057099000 d:\java\jdk1.8.0_171\jre\bin\java.dll 0x00007ff948170000 - 0x00007ff948339000 c:\windows\system32\dbghelp.dll vm arguments://虚拟机参数 jvm_args: -javaagent:agent.jar java_command: wqz.zoom.instrument.native java_class_path (initial): agent.jar;agent.jar launcher type: sun_standard environment variables://环境变量 java_home=d:\java\jdk1.8.0_171 classpath=.;d:\java\jdk1.8.0_171\lib;d:\java\jdk1.8.0_171\jre\lib;d:\java\jdk1.8.0_171\lib\tools.jar; path=c:\perl64\site\bin;c:\perl64\bin;c:\program files (x86)\common files\oracle\java\javapath;c:\program files (x86)\intel\intel(r) management engine components\icls\;c:\program files\intel\intel(r) management engine components\icls\;c:\windows\system32;c:\windows;c:\windows\system32\wbem;c:\windows\system32\windowspowershell\v1.0\;c:\program files (x86)\intel\intel(r) management engine components\dal;c:\program files\intel\intel(r) management engine components\dal;c:\program files (x86)\intel\intel(r) management engine components\ipt;c:\program files\intel\intel(r) management engine components\ipt;d:\program files\git\cmd;c:\windows\system32\openssh\;c:\windows\system32\config\systemprofile\.dnx\bin;c:\program files\microsoft dnx\dnvm\;c:\program files\microsoft sql server\130\tools\binn\;c:\program files (x86)\windows kits\8.1\windows performance toolkit\;d:\java\jdk1.8.0_171\jre\bin;c:\users\qizhuang\.dnx\bin;c:\users\qizhuang\appdata\local\microsoft\windowsapps;d:\java\jdk1.8.0_171\bin;d:\tomcat\apache-tomcat-8.5.32\bin;d:\java\apache-maven-3.5.4\bin;d:\minio;c:\openssl-win64\bin;c:\program files\mysql\mysql server 8.0\bin;d:\program files\docker toolbox;d:\program files\win64-build\bin;d:\java\redis;d:\program files\erl7.2.1\bin;d:\program files\rabbitmq_3.6.0\rabbitmq_server-3.6.0\sbin;d:\program files\nginx\nginx-1.14.0;c:\program files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin;c:\program files (x86)\microsoft visual studio 14.0\vc\bin;d:\java\textspace\helloworld; username=qizhuang os=windows_nt processor_identifier=intel64 family 6 model 158 stepping 10, genuineintel --------------- s y s t e m --------------- os: windows 10.0 , 64 bit build 17134 (10.0.17134.1) cpu:total 6 (initial active 6) (6 cores per cpu, 1 threads per core) family 6 model 158 stepping 10, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, tsc, tscinvbit, bmi1, bmi2, adx memory: 4k page, physical 8253040k(3680832k free), swap 14008564k(7055292k free) vm_info: java hotspot(tm) 64-bit server vm (25.171-b11) for windows-amd64 jre (1.8.0_171-b11), built on mar 28 2018 16:06:12 by "java_re" with ms vc++ 10.0 (vs2010) time: thu oct 18 10:45:08 2018 elapsed time: 0 seconds (0d 0h 0m 0s)
上一篇: Spring核心——设计模式与IoC