监控程序线程

程序线程可分为监控程序线程和用户线程:
可以用Thread的setDaemon()设置。true为监控线程,false为用户线程...
二者区别在于,用户线程会阻止JVM退出,而监控线程则不会,
package lession3;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test {
protected JFrame frame;

public static void main(String args[]){
Test t=new Test();
}
public Test(){
frame=new JFrame("HelloWorld");
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent event){
frame.setVisible(false);
frame.removeWindowListener(this);
frame.dispose();
frame=null;
}
});
Container pane=frame.getContentPane();
pane.setLayout(new FlowLayout());
pane.add(new JLabel("Helloworld!"));
frame.setSize(400,300);
frame.setVisible(true);
}
/*
* 本例中阻止JVM退出的是用户线程是AWT事件线程。该线程在JFrame创建时启动,用于生成
* 框架并提供事件通知服务,如果仍有用户线程执行中,则可以调用System.exit(0)强行退出。
*/
}
Arthas是一个非常方便的Java应用性能诊断工具,可以帮助我们监控和分析JVM线程。 Arthas通过所谓的"剖析"对JVM线程进行监控。"剖析"是指在运行时对目标应用程序进行代码注入和操作,从而获取应用程序的运行信息。Arthas使用了Java的Instrumentation API,以字节码增强的方式,动态修改目标类的代码,使之能够收集和输出线程相关的信息。 使用Arthas监控JVM线程非常简单。首先,我们需要在目标Java应用程序的启动命令行中加入Arthas的Agent参数,例如: java -jar arthas-boot.jar 然后,我们可以使用命令"thread"来监控JVM线程。例如,我们可以使用"thread"命令来查看当前所有线程的堆栈信息,包括线程ID、线程名称、线程状态以及调用栈信息。 另外,Arthas还提供了一些其他的命令来更细粒度地监控线程。比如:"thread -n 5"可以指定仅显示前5个线程的堆栈信息,"thread -t 1"可以指定只显示处于RUNNABLE状态的线程。 此外,Arthas还提供了丰富的过滤条件,用于更准确地筛选要监控线程。比如,我们可以使用"thread -n 5 -p xxx"来查看线程名称中含有"xxx"的前5个线程的信息。 总而言之,通过Arthas,我们可以方便地监控JVM线程,了解线程的状态和调用栈信息,帮助我们进行应用程序的性能分析和故障排查。使用Arthas,我们可以及时发现线程问题,并采取相应的措施来优化我们的Java应用程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值