使用JConsole监控

Java 9并发编程指南 目录

JConsole是遵循JMX规范的监视工具,用来获取关于应用执行的信息,如线程数、内存使用或类加载。它包含在JDK中,可以用于监视本地或远程应用程序。本节讲学习如何使用JConsole监控简单的并发应用。

准备工作

本范例通过Eclipse开发工具实现。如果使用诸如NetBeans的开发工具,打开并创建一个新的Java项目。

实现过程

通过如下步骤实现范例:

  1. 创建名为Task的类,指定Runnable接口。实现run()方法,在100秒内输出信息到控制台:

    public class Task implements Runnable{
    	@Override
    	public void run() {
    		Date start, end;
    		start = new Date();
    		do {
    			System.out.printf("%s: tick\n",
    			Thread.currentThread().getName());
    			end = new Date();
    		} while (end.getTime() - start.getTime() < 100000);	
    	}
    }
    
  2. 实现包含main()方法的Main类,创建10个Task任务来创建10个线程,启动线程,然后使用join()方法等待结束:

    public class Main {
    	public static void main(String[] args) {
    		Thread[] threads = new Thread[10];
    		for (int i=0; i<10; i++) {
    			Task task=new Task();
    			threads[i]=new Thread(task);
    			threads[i].start();
    		}
    		for (int i=0; i<10; i++) {
    			try {
    				threads[i].join();
    			} catch (InterruptedException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    }
    
  3. 打开控制台窗口,在JDK-9安装目录的bin下,执行JConsole应用。

工作原理

本节实现了非常简单的范例:运行10个线程100秒钟,这些线程输出信息到控制台。

当执行JConsole,将看到系统中正在运行的所有Java应用,选择想要监控的应用,如下图所示:

pics/09_09.jpg

在这里选择本范例,点击连接按钮。然后,将被要求与应用建立不安全的连接,对话框如下图所示:

pics/09_10.jpg

点击不安全的连接按钮,JConsole提供六个选项卡显示应用信息:

  • 概览选项卡提供内存使用的概述、运行的线程数量、创建的对象数量以及CPU使用情况。
  • 内存选项卡显示使用的内存数量。可以选择要监视的内存类型(堆、非堆或池)组合。
  • 线程选项卡显示线程数量和每个线程的详细信息。
  • 选项卡显示加载的对象数量的信息。
  • VM 概要选项卡提供运行应用的JVM概要。
  • MBean选项卡显示有关应用的托管bean的信息。

选项卡如下图所示:

pics/09_11.jpg

它分为两部分,上半部分,显示实时的峰值线程数(红线)和活动线程数(蓝线)的信息。下半部分显示活跃线程数列表,选择其中一个线程,将看到所选线程的详细信息,包括状态和实际堆栈跟踪。

扩展学习

还可以使用其他应用来监视Java运行的程序。例如,包含JDK的VisualVM。访问https://visualvm.github.io/获取VisualVM的详细信息。

更多关注

  • 本章“使用MultithreadedTC测试并发代码”小节
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值