1 前言
回答之前先让我们来看看什么是jProfiler:JProfiler是一个商业授权的Java剖析工具,由EJ技术有限公司,针对Java EE和Java SE应用程序开发的。它允许两个内存剖面评估内存使用情况和动态分配泄漏和CPU剖析,以评估线程冲突。JProfiler直觉式的GUI让你可以找到性 能瓶颈、抓出内存漏失(memory leaks)、并解决执行绪的问题。[from 百度百科]
简而言之,它能通过评估CPU、内存以及线程来避免内存漏失,是一个性能监测工具。
试想,我们发布在服务器上的项目如何测试其健壮性以及可行性?如何做出一个合格放心的产品来?我给出的答案是在负载测试下进行数据收集和数据监控,调整你的代码或者配置使你的项目运行状况达到最优。
笔者这里有一个JProfiler7的License Key:L-J7-feng#1000-289nsew356eehq#9163,填写密钥时name和company随便填就好了[分享即是美德]。假如密钥失效,安装后有免费的10天试用期,选中“Evaluation”表示评估试用即可。
package jProfiler;
public class Test extends Thread{
public static void main(String[] args) throws InterruptedException {
Test t = new Test();
for(int i=1; i<10000; i++) {
new HelloWorld();
t.sleep(100); // 休眠100毫秒
}
}
}
class HelloWorld {
public HelloWorld() {
System.out.println("Hello Jayzee!");
}
}
你也可以点"Show Services"进行手动刷新,JProfiler会自动帮你捕获运行中的java程序)。
点击Session→Integration Wizards→New Server Integration→Apache Tomcat 7.x→On this computer→勾选你的JVM信息→Waif for a connection from the JProfiler GUI(就是由JProfiler帮你启动tomcat)→选着你的startup.bat→保持默认端口8849→启动。
1. 你在JProfiler中保存的这个session,如果你双击运行它,它的实质也是去调用startup.bat来启动,因此假如你已经手动启用了tomcat然后又在JProfiler启动这个session,这时候就会报错--端口被占用;
2. 监控过程中,假如tomcat意外关闭,这时候会报下面这样一个错误,错误提示你要勾选"Keep VM alive",在Start Center编辑你保存的session→Profiling Settings选项卡→Customize Profiling Settings→Miscellaneous→Keep VM alive即可。
请先花几分钟看看这篇博文:JProfiler学习笔记
.
.
.
几分钟很快就过去了,让我们做以下几个总结:
所有对象 All Objects
显示类或在状况统计和尺码信息堆上所有对象的包。你可以标记当前值并显示差异值。
类 Classes
显示所有类和它们的实例,可以右击具体的类"Used Selected Instance"实现进一步跟踪。
JProfiler 提供不同的方法来记录访问树以优化性能和细节。线程或者线程组以及线程状况可以被所有的视图选择。所有的视图都可以聚集到方法、类、包或J2EE组件等不同层上。CPU视图部分包括:
访问树 Call Tree
显示一个积累的自顶向下的树,树中包含所有在JVM中已记录的访问队列。JDBC,JMS和JNDI服务请求都被注释在请求树中。请求树可以根据Servlet和JSP对URL的不同需要进行拆分。
线程历史 Thread History
显示一个与线程活动和线程状态在一起的活动时间表。
当前锁定图表 Current Locking Graph
显示JVM中的当前锁定情况。
内存 Memory
显示堆栈的使用状况和堆栈尺寸大小活动时间表。
如果你发现内存图中可用内存随着时间的流逝一直在上升而没有GC回收的动作,那么你就要怀疑它是否存在着内存泄露了;
Key 3,追踪主要使用Heap Walker的各项功能,各功能具体能做何种分析请复习章节3.1直观认识和3.2.2 堆遍历 Heap Walker。
原文:http://www.cnblogs.com/zhengah/p/4995217.html