这可能是我写的最懒的博客系列了…如果仅仅是看一眼,那还真的是只能看一眼 /捂脸。

写在前面

文章参考自官方文档,仅适用于 windows 系统,有关 linux 系统的工具适用,请参考官方文档



使用后续描述的两种命令来监视和管理Java应用程序。命令的可执行jar 包,可在 JDKbin 路径下找到。由于该路径已经加到了环境变量中,我们可以在任何路径下的命令行窗口执行以下的命令。



jconsole

启动图形化控制台,监视和管理Java应用程序。

语法jconsole [options] [connection...]

Options:

  • -interval=n
    将更新间隔设置为 n 秒(默认为 4 秒)
  • -notile
    最初不平铺两个窗口(用于两个或多个连接)
  • -pluginpath plugins
    指定要搜索JConsole插件的目录或JAR文件的列表。
  • -version
    显示发布信息并退出
  • -help
    显示帮助信息
  • -Jflag
    传递flagjconsole所运行的 JVM

connection:

connection=pid|host:port|jmxURL

pid值是本地 Java 虚拟机(JVM)的进程ID。JVM必须以与运行jconsole命令的用户ID相同的用户ID运行。这些host:port值是运行JVM的主机系统的名称,以及com.sun.management.jmxremote.port启动JVM时由系统属性指定的端口号。jmxUrl值是要连接的JMX代理的地址。有关这一部分的更详细内容参考 JMX的用处及用法



测试

运行以下代码:

public class Test{

	private byte[] bytes = new byte[1024*1024];
	
	public static void main(String[] args) throws Exception{
		Test[] tests = new Test[1024];
		for(int i=0; i< 1024; i++){
			tests[i] = new Test();
			Thread.sleep(2000);
		}
	}

}

使用命令行工具打开 jconsole , 选择 Test

java 线程监控 java程序监控_JVM



jvisualvm

可视化地监视、诊断和配置Java应用程序。

语法jvisualvm [options]

Java VisualVM是一个直观的图形用户界面,当基于Java 技术的应用程序(Java应用程序)在指定的Java虚拟机(JVM)上运行时,可提供有关它们的详细信息。

Java VisualVM之所以命名,是因为 Java VisualVM 可视地提供了有关 JVM软件的信息。Java VisualVM将多个监视,故障排除和性能分析实用程序组合到一个工具中。例如,大多数的功能提供由独立的工具jmapjinfojstat,jstack被整合到JavaVisualVM。可以将其他功能(例如jconsole命令提供的功能)添加为可选插件。



Java VisualVM对 Java 应用程序开发人员进行应用程序故障排除以及监视和改善应用程序的性能很有用。Java VisualVM 使开发人员能够生成和分析堆转储,跟踪内存泄漏,执行和监视垃圾回收以及执行轻量级内存和CPU性能分析。您可以使用插件扩展Java VisualVM功能。例如,该jconsole命令的大多数功能都可以通过“ MBeans 选项卡”和“JConsole 插件包装器”插件获得。您可以从标准Java VisualVM 插件的目录中选择,方法是依次选择工具Java VisualVM”菜单中的“ 插件 ”。



测试

运行 jvisualvm 命令,选择 Test:

java 线程监控 java程序监控_Java_02