java虚拟机性能监控与故障处理#2014-11-09#

http://www.eclipse.org/mat/downloads.php


IBM HeapAnalyzer

eclipse memory analyzer


如果是使用ide,例如eclipse

会有这样的一个文件(D:\2tools\myWorkspaces\miniui_java\.settings)

java虚拟机性能监控与故障处理#2014-11-09#

我的eclipse运行web项目

-Dcatalina.base="D:\2tools\myWorkspaces\.metadata\.plugins\org.eclipse.wst.server.core\tmp0" -Dcatalina.home="D:\2tools\apache-tomcat-7.0.55-windows-x86" -Dwtp.deploy="D:\2tools\myWorkspaces\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps" -Djava.endorsed.dirs="D:\2tools\apache-tomcat-7.0.55-windows-x86\endorsed"

D:\2tools\java\jdk1.7.0_17\bin>jps -v
7240  -Dosgi.requiredJavaVersion=1.6 -Xms256m -Xmx512m -XX:PermSize=128M -XX:Max
PermSize=128M -XX:+UseParallelGC -Xverify:none
2056 Jps -Denv.class.path=.;D:\2tools\java\jdk1.8.0_18\lib;D:\2tools\java\jdk1.8
.0_18\lib\tools.jar -Dapplication.home=D:\2tools\java\jdk1.7.0_17 -Xms8m

=================================================================

利用jdk1.5中,java.lang.Thread类新增的一个getAllStackTraces()方法用于获取虚拟机中所有线程的StackTraceElement对象.使用这个方法可以通过简单几行代码完成jstack大部分功能,

<%@page import="java.util.Map"%>
<html>
<head>
<title>服务器线程信息</title>
<body>
<pre>
<%
    for(Map.Entry<Thread,StackTraceElement[]> stackTrace : Thread.getAllStackTraces().entrySet()){
    Thread thread = (Thread).stackTrace.getKey();
    StackTraceElement[] stack=(StackTraceElement[]).getValue();
    if(thread.equals(Thead.currentThread())){
        continue;
    }
    out.print("\n线程:"+thread.getName()+"\n");
    for(StackTraceElement element :stack){
        out.print("\t"+element+"\n");
    }
  }
%>
</pre>
</body>
</head>
</html>


你可能感兴趣的:(java虚拟机性能监控与故障处理#2014-11-09#)