12

mac2022-06-30  21

一:异常项目构建

1.通过while死循环构造异常常见:

package com.huawei.jvm; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /** * This is Description * * @author 王明飞 * @date 2018/08/31 */ @Controller public class Test { @RequestMapping("/hello") public String hello() { return "hello"; } @RequestMapping("/jvm01") public void jvm01() { while (true) { } } }

二:项目部署到linux服务器上

1.可通过war包放到webapp目录下;

2.启动tomcat自动解压。

3.关闭tomcat;

4.删除webapp目录下的war包

5.启动tomcat;

三:linux 服务器top命令查看

终端观察下图中的三处变化

访问前:top命令状态

curl使用后:

 

 可以看到cpu使用达到了99.7%

四: 使用jstack命令

[root@localhost ~]# jstack 16350 >16350.txt [root@localhost ~]# ll 总用量 179304 -rw-r--r--. 1 root root 12687 8月 2 08:19 16350.txt -rw-------. 1 root root 1096 7月 22 00:54 anaconda-ks.cfg drwxr-xr-x. 9 root root 4096 7月 24 23:12 apache-tomcat-7.0.47 -rw-r--r--. 1 root root 8234674 9月 11 2015 apache-tomcat-7.0.47.tar.gz -rw-r--r--. 1 root root 14558 8月 2 04:33 a.txt drwxr-xr-x. 3 root root 4096 7月 22 03:44 IK Analyzer 2012FF_hf1 -rw-r--r--. 1 root root 8017 7月 22 00:54 install.log -rw-r--r--. 1 root root 3384 7月 22 00:53 install.log.syslog -rw-r--r--. 1 root root 7586984 9月 1 2018 jvm-test01-1.0-SNAPSHOT.war drwxr-xr-x. 8 root root 4096 7月 22 02:03 solr-4.10.3 -rw-r--r--. 1 root root 150010621 9月 11 2015 solr-4.10.3.tgz.tgz drwxr-xr-x. 10 1000 1000 4096 2月 20 2014 zookeeper-3.4.6 -rwxrwxrwx. 1 root root 17699306 5月 28 21:14 zookeeper-3.4.6.tar.gz

五:按住shift+H,转行成打开show thread

[root@localhost ~]# printf "%x \n" 16381 3ffd [root@localhost ~]# vi 16350.txt 2018-08-02 08:19:33 Full thread dump Java HotSpot(TM) Client VM (24.55-b03 mixed mode): "Attach Listener" daemon prio=10 tid=0xe081c800 nid=0x401a waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "http-bio-8080-exec-3" daemon prio=10 tid=0xe0c99000 nid=0x3ffd runnable [0xe0a7a000] java.lang.Thread.State: RUNNABLE at com.huawei.jvm.Test.jvm01(Test.java:25) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.jav a:137)

五:查看源代码:

定位出是while死循环引起

 

转载于:https://www.cnblogs.com/smallTiger123/p/9569372.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)