高手的存在,就是让服务10亿人的时候,你感觉只是为你一个人服务......

线程堆栈监控页面

目录
  1. 1. 查看StaceTraceElement的JSP页面

jdk1.5以后,java.lang.Thread类提供了getAllStackTraces() 方法,
来获取jvm中所有线程的stackTraceElement对象信息;其实就是jstack的功能
我们可以写成一个页面,用浏览器来查看线程堆栈信息,有些时候会比较方便。

查看StaceTraceElement的JSP页面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
   <%@page language="java" contentType="text/html; charset=GBK"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ page isELIgnored="false"%>
<%@ page import="java.util.Map" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> Server Thread Strace Info</title>
</head>
<body>
<pre>
<%
for (Map.Entry<Thread , StackTraceElement[]> stackTrace : Thread.getAllStackTraces().entrySet()){
Thread thread = (Thread)stackTrace.getKey();
StackTraceElement[] stack = (StackTraceElement[])stackTrace.getValue();

if(thread.equals(Thread.currentThread())){
continue;

}
out.print("\n Thread:"+thread.getName()+"\n");
for(StackTraceElement element:stack){
out.print("\t"+element+"\n");

}
}

%>
</pre>
</body>
</html>

Alt text