阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

JConsole JDK1.6 使用手册

573次阅读
没有评论

共计 14532 个字符,预计需要花费 37 分钟才能阅读完成。

JConsole 的图形用户界面是一个符合 Java 管理扩展(JMX)规范的监测工具。JConsole使用 Java 虚拟机(Java VM),提供在 Java 平台上运行的应用程序的性能和资源消耗的信息。

在 Java 平台,标准版(Java SE 平台)6,JConsole 的已经更新到目前的外观和感觉的 Windows 和 GNOME 桌面(其他平台,将目前标准的 Java 图形的外观和感觉)。在这个文件中提出的屏幕截图是从 Windows XP 上运行的接口的一个实例。

启动 JConsole

JConsole 是可执行文件,在 JDK_HOME / bin 目录 其中 JDK_HOME 是在 Java 开发工具包(JDK)的安装目录。如果此目录是在您的系统路径,你可以开始只需键入命令jconsole。否则,您必须键入可执行文件的完整路径。

命令语法

您可以使用 JConsole 来监视本地应用程序以及远程应用程序。


注 -使用 JConsole 监视本地应用程序在开发和创建原型是非常有用的,但不推荐用于生产环境,因为 jconsole 本身也消耗大量的系统资源。远程监控建议隔离被监视机器。


jconsole 命令的语法完整的参考,请 参阅 JConsole 的命令手册页:Java 监视和管理控制台。

设置本地监控

在命令行中键入以下命令启动 JConsole 的。

JConsole

当 JConsole 的启动时,您将获得一个本地运行 JConsole 的可以连接到的所有的 Java 应用程序的选择。

如果您要监控的特定应用程序,你知道该应用程序的进程 ID,那么你也可以启动 JConsole 连接到该应用程序。此应用程序必须和 JConsole 运行在相同的用户 ID 下。该命令的语法以下。

%JConsole 中 processID

以上 的 processID是应用程序的进程 ID(PID)。您可以用以下方式确定一个应用程序的 PID:

  • 在 UNIX 或 Linux 系统,可以 使用 ps 命令找到正在运行的Java 实例的 PID。
  • 在 Windows 系统上,您可以使用任务管理器,找到 java 或者 javaw 进程的 PID。
  • 您还可以使用 jps 命令行实用程序来确定的 PID。见的手册页的 Java 虚拟机进程状态工具。

例如,如果你确定,记事本 应用程序的进程 ID 是 2956,那么你可以用下面的命令启动 JConsole。

JConsole 2956

jconsole 和被监视的应用程序必须运行在相同的用户下,拥有管理和监控系统使用的操作系统的文件权限。如果你不指定一个进程 ID,jconsole 会自动检测所有本地 Java 应用程序,并显示一个对话框,让你选择一个(参阅连接到 JMX 代理)。

欲了解更多信息,请参阅本地监控和管理。

 

设置远程监控

要启动远程监控 JConsole 的,您可以使用下面的命令语法。

JConsole 主机名 portNum

主机名是需要监听的主机,portNum是你启动 Java 虚拟机时指定的 JMX 代理的端口号。欲了解更多信息,请参阅远程监控和管理。

如果你不指定一个主机名 / 端口号的组合,那么 jconsole 会显示一个连接对话框(连接到 JMX 代理),让你输入一个主机名和端口号。

建立安全的远程监控

您也可以使用安全套接字层(SSL)进行安全的连接。命令启动 JConsole 的安全连接是在第 2 章,监控和管理使用 JMX 技术 启用 SSLJConsole的远程监控。

 

连接到一个 JMX 代理

如果您启动 jconsole 的时候指定的 JMX 代理连接到的参数,它会自动开始监视指定的 Java VM。您可以连接到不同的主机在任何时候通过选择连接 | 新连接,并输入必要的信息。

否则,如果你不提供任何参数,当您启动 JConsole 的,第一眼看到的是连接对话框。此对话框有两个选项,允许连接到本地或远​​程进程。

 

动态连接

在以前的版本的 Java SE 平台,应用程序,你想监测与 JConsole 的需要与下面的选项开始。

%,Dcom.sun.management.jmxremote

然而,与 Java SE 6 平台提供的 JConsole 的版本,可以连接到任何应用程序,支持附加的 API。换句话说,任何在 Java SE 6 HotSpot 虚拟机启动的应用程序由 JConsole 自动检测,并不需要使用上述的命令行选项开始。

 

JConsole 的连接到一个本地进程

如果你不提供连接到一个特定的 JMX 代理启动 JConsole 的,你会看到下面的对话框窗口。

 

图 3 - 1 创建一个连接到一个本地进程

JConsole JDK1.6 使用手册

本地进程选项列出所有运行在本地系统上且和 JConsole 程序相同的用户 ID 的 Java SE6 应用,包括进程 ID 和他们的类或参数信息。选择您要监视的应用程序,然后单击“连接”按钮。本地进程的名单中包括以下类型的 Java 虚拟机的运行的应用程序。

  • 启用管理代理的应用,包括 Java SE 6 平台 指定 Dcom.sun.management.jmxremote 选项 Dcom.sun.management.jmxremote.port 选项开始的 J2SE 5.0 平台上的应用。此外,名单中还包括任何应用程序,Java SE 6 平台上开始没有任何管理属性,但以后 JConsole 的重视,这使得在运行时管理代理。
  • 禁用管理代理,可连接的应用,应用程序在运行时禁用加载管理代。Java SE 6 平台上开始支持附加的 API 的应用程序, 支持动态的应用程序连接,启动管理代理可以不通过在命令行 指定 com.sun.management.jmxremote 或 com.sun.management.jmxremote.port 选项。如果选择此类应用程序连,将启用该应用的管理代理。在连接的例子所示的对话框图 3- 1 中,NetBeans IDE 和 jconsole 本身也均开始在 Java SE 6 平台的虚拟机。同时出现在正常的文本,这意味着,JConsole 的可以连接到它们。在图 3 - 1 中,JConsole 是选定的,值得注意的是可见的。
  • 禁用应用程序,不扣押,管理代理。这些措施包括开始的 J2SE 1.4.2 平台上的应用,或 J2SE 5.0 平台上开始 没有 Dcom.sun.management.jmxremote com.sun.management.jmxremote.port 选项​​。这些应用程序的显示表中显示为灰色和 JConsole 中无法连接到他们。字谜 应用程序在连接的例子所示的对话框图 3-1,没有任何的管理属性与 J2SE 5.0 平台的虚拟机开始启用 JMX 代理,并因此显示为灰色,无法选择。

图 3 - 2 没有管理代理尝试连接到应用程序启用

JConsole JDK1.6 使用手册

 

 

JConsole 的连接到远程进程

当打开连接对话框,你也可以连接到远程进程。

 

图 3 - 3 创建一个连接到远程进程

JConsole JDK1.6 使用手册

要监控远程 Java 虚拟机上运行的过程中,你必须提供下列资料。

  • 主机名:Java 虚拟机正在运行的机器上的名称。
  • 端口号:当你启动 Java 虚拟机指定 JMX 代理端口号码。
  • 用户名和密码:用户名和密码才能使用(需要监测只有通过 JMX 代理,需要密码验证的 Java 虚拟机)。

有关设置 JMX 代理的端口号的信息,请参阅启用远程管理。有关用户名和密码的信息,请参阅使用密码和访问文件。 

 

使用 JMX 服务 URL 连接

您还可以使用远程进程选项指定他们的 JMX 服务 URL 连接其他 JMX 代理,用户名和密码。一个 JMX 服务 URL 的语法要求您提供用于进行连接的传输协议,以及服务接入点。

 

图 3 - 4 连接到一个 JMX 代理使用的 JMX 服务 URL

JConsole JDK1.6 使用手册

如果 JMX 代理使用一个不包含在 Java 平台上的连接器,你需要添加连接器类到类路径中,如下所示。

%JConsole- J - Djava.class.path = JAVA_HOME / lib 中 / jconsole.jar:JAVA_HOME /

 

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-02/113412p2.htm

介绍 JConsole 的标签

一旦你连接到一个应用程序,JConsole 界面由六个标签组成。

  • 概述:显示有关 Java VM 和监视值的概述信息。
  • 内存:显示内存使用信息。
  • 线程:显示线程使用的信息。
  • 类:显示关于类加载的信息。
  • 虚拟机:显示有关 Java VM 的信息。
  • MBean:显示 MBean 信息。

随时可以使用 JConsole 的在右上角的绿色连接状态图标,断开或重新连接到正在运行的 Java 虚拟机。从下拉菜单中 选择连接,然后新建 连接,您可以同时连接到任何数量运行中的 Java 虚拟机。

查看概述信息

概述选项卡中显示 CPU 使用率,内存使用率,线程数,Java VM 中加载的类的监控信息。

图 3 - 5 概述“选项卡

JConsole JDK1.6 使用手册

“概述”选项卡提供了一种简单的方法相关的信息,以前只能通过多个选项卡之间切换。

 

保存图表数据

JConsole 的,可以让您保存在一个逗号分隔值(CSV)文件中的图表提供的数据。为了节省从图表中的数据,只需右键单击任何图表上,选择保存 数据,然后指定其中的数据将被保存的文件。从任何任何 JConsole 的不同的标签以这种方式显示的图表,您可以保存数据。

CSV 格式是常用的电子表格应用程序之间的数据交换。CSV 文件可以导入到电子表格应用程序,可以用来创建这些应用程序的图表。这些数据是两个或多个命名的列,第一列表示的时间戳。导入电子表格应用程序的文件后,你通常需要选择的第一列,并改变其格式为“日期”或“日期 / 时间”。

 

监控内存消耗

Memory 选项卡提供了内存消耗和内存池的信息。

 

图 3 - 6 内存“选项卡

JConsole JDK1.6 使用手册

内存标签功能“执行 GC”的按钮,可以单击执行垃圾收集。图表动态显示内存使用的堆和非堆内存的内存池。可用的内存池取决于正在使用的版本的 Java VM。串行垃圾回收的内存池的 HotSpot Java 虚拟机,有以下几种。

  • 伊甸园空间(堆):大多数对象最初分配内存的池。
  • 生存空间(堆):包含伊甸园空间垃圾收集后生存的对象。
  • 年老代(堆):池包含已经存在一段时间的对象。
  • 永久代(非堆):池包含的所有虚拟机本身的反射的数据,如类和方法的对象。Java 虚拟机,使用类数据共享,这一代分为只读和读写区域。
  • 代码缓存(非堆):HotSpot Java 虚拟机的还包括一个代码缓存,包含内存,使用本机代码的编译和存储。

您可以从 图表 下拉菜单中的选项选择不同的图表显示图表这些内存池的消费。此外,点击在右下角的角落堆和非堆图标,将切换显示图表。最后,您可以指定您跟踪内存使用情况,从 时间范围内 的下拉菜单中的选项选择的时间范围。

欲了解更多有关这些内存池的信息,请参阅下面的垃圾收集。

“详细信息”区域显示了当前内存信息:

  • 已使用:目前使用的内存量,包括所有对象,可达和不可达占用的内存。
  • 分配:保证由 Java 虚拟机使用的内存量。提交的内存量可能会随时间而改变。Java 虚拟机可能会释放系统内存,并已提交的内存量可能会少于最初启动时分配的内存量。提交的内存量将始终大于或等于使用的内存量。
  • 最大 值,可用于内存管理的最大内存量。它的价值可能会发生变化,或者是不确定的。如果 Java 虚拟机试图增加使用的内存要大于提交的内存,内存分配可能失败,即使使用量小于 等于最大值(例如,当系统上的虚拟内存不足)。
  • GC 时间:累计时间花在垃圾收集和调用的总数。它可能有多个行,其中每一个代表一个垃圾收集器算法在 Java 虚拟机使用时间。

较低的右侧的条形图显示堆和非堆内存中的内存池消耗的内存。列会变成红色时,使​​用的内存超过了内存使用阀值。

 

堆和非堆内存

Java 虚拟机管理两种内存:堆和非堆内存,这两者都是 Java 虚拟机启动时创建的。

  • 堆内存 是运行时数据区域,Java VM 的所有类实例和数组分配内存。可能是固定或可变大小的堆。
  • 非堆内存 包括在所有线程和 Java 虚拟机内部处理或优化所需的共享的方法。它存储了类的结构,运行常量池,字段和方法数据,以及方法和构造函数的代码,方法区在逻辑上是堆的一部分,看具体实现的方式。根据实现方式的不同,Java 虚拟机可能不进行垃圾收集或压缩。堆内存一样,方法区域可能是一个固定或可变大小。方法区的内存不需要是连续的。

除了方法区,Java 虚拟机可能需要进行内部处理或优化,这也属于非堆内存的内存。例如,实时(JIT)编译器需要内存用于存储从 Java 虚拟机的高性能的代码翻译的机器码。

 

内存池和内存管理器

内存池和内存管理器是 Java 虚拟机的内存系统的关键环节。

  • 一个 内存池 表示 Java 虚拟机管理的内存区域。Java 虚拟机至少有一个内存池,它可能在执行过程中创建或删除内存池。一个内存池可以属于堆或以非堆内存。
  • 一个 内存管理器 管理一个或多个内存池。垃圾收集器是一个负责回收不可达的对象使用的内存的内存管理器。Java 虚拟机可能有一个或更多的内存管理器。在执行过程中,它可以添加或删除内存管理器。一个内存池可以由一个以上的内存管理器进行管理。

 

垃圾收集

垃圾收集(GC)是 Java 虚拟机如何释放不再被引用的对象所占用的内存。它通常认为的对象,有作为“活着”和非引用作为或不可达对象的活动引用“死。”垃圾收集是由死对象占用的的内存释放过程。气相色谱法的算法和使用的参数可以对性能有巨大影响。

Java HotSpot 虚拟机的垃圾收集器使用代 GC。代 GC 的优势,大多数都符合以下的概括。

  • 他们创建有许多短暂的一生对象,例如,迭代和局部变量。
  • 他们创建一些对象,有很长的生活,例如,高层次的持久对象。

代 GC 分为几代,并给每个指定一个或多个内存池。当一代使用了分配的内存,虚拟机上执行一个局部的 GC(也叫 minor collection),内存池回收死对象使用的内存。这部分的 GC 速度通常远远优于一个完整的 GC。

Java HotSpot 虚拟机定义了两代:年轻代(有时也被称为“托儿所”)和年老代。年轻代包括“伊甸园空间”和两个“生存空间”。最初,VM 将所有的对象在“伊甸园”空间,大多数对象死在那里。当它执行了一次 minor GC,VM 将剩余的对象从“伊甸园空间”转移到“生存空间”。虚拟机将足够长生存时间的对象移动到年老代的空间。当年老代填满了,将是一个完整的 GC,往往是慢得多,因为它涉及到所有存活的对象。永久代包含所有的虚拟机本身的反射,如类和方法的对象的数据。

默认情况下代安排看起来像图 3 -7。

 

图 3 - 7 代的数据,在垃圾收集

JConsole JDK1.6 使用手册

如果垃圾收集器已经成为一个瓶颈,你可以通过自定义代大小来提高性能。使用 JConsole,你可以调查你的性能指标的敏感性实验与垃圾收集器的参数。欲了解更多信息,请参阅调整与 5.0 HotSpot 虚拟机的垃圾收集。

监视线程使用

线程“选项卡上提供了有关线程使用的信息。

 

图 3 -8 Threads 选项卡

JConsole JDK1.6 使用手册

在左下角的“线程”列表列出了所有的活动线程。如果你输入一个“过滤器”字段中的字符串,线程列表将只显示其名称中包含你输入字符串线程。点击一个线程在线程列表的名称,显示该线程的信息的权利,包括线程的名称,状态,和堆栈跟踪。

图表显示活动线程的数量随着时间的推移。两行显示。

  • 红色:峰值线程数
  • :活动线程数。

线程选项卡提供了几个有用的操作。

  • findMonitorDeadlockedThreads:检测,如果任何线程对象监视器锁定陷入死锁。此操作返回一个死锁的线程 ID 数组。
  • getThreadInfo:返回线程的信息。这包括名称,堆栈跟踪和监测锁,该线程目前已封锁,如果有的话,哪个线程持有该锁,以及线程争用统计。
  • getThreadCpuTime:返回给定的线程所消耗的 CPU 时间

通过 MBeans 选项卡,您可以通过选择的 MBean 树中的线程 MXBean 的这些附加功能。这 MXBean 的访问被监视的 Java 虚拟机线程信息列出所有的属性和操作。请参阅监视和管理的 MBean。

检测死锁线程

要检查如果您的应用程序已经陷入了僵局运行(例如,您的应用程序似乎是挂了),死锁的线程可以通过点击“检测死锁”按钮检测。如果检测到任何死锁的线程,这些都显示在一个新的标签,旁边出现的“主题”标签,在图 3- 9 所示。

 

图 3 - 9 僵持主题

JConsole JDK1.6 使用手册

检测死锁“按钮,将涉及对象 监视器和 java.util.concurrent 的可拥有同步器(见 API 规范文档 java.lang.management.LockInfo)检测死锁循环。Java SE 6 中已加入 的 java.util.concurrent锁的监控支持。如果 JConsole 的连接到一个 J2SE 5.0 VM,检测死锁机制只会找到相关的对象监视器死锁。jconsole 会不显示任何相关的可拥有同步器的死锁。

关于线程和守护线程的详细信息, 参见 API 文档的 java.lang.Thread。

 

监视类载入中

“类”标签显示关于类加载的信息。

 

图 3 -10 类标签

JConsole JDK1.6 使用手册

图表曲线加载的类的数量随着时间的推移。

  • 红线总数(包括后来卸载的)加载的类。
  • 蓝线是当前的类加载。

在选项卡底部的详细信息部分显示类的加载,因为 Java 虚拟机开始的总数,当前加载和卸载的数量。跟踪类加载详细的输出,您可以勾选在顶部的右上角复选框。

JConsole 的图形用户界面是一个符合 Java 管理扩展(JMX)规范的监测工具。JConsole使用 Java 虚拟机(Java VM),提供在 Java 平台上运行的应用程序的性能和资源消耗的信息。

在 Java 平台,标准版(Java SE 平台)6,JConsole 的已经更新到目前的外观和感觉的 Windows 和 GNOME 桌面(其他平台,将目前标准的 Java 图形的外观和感觉)。在这个文件中提出的屏幕截图是从 Windows XP 上运行的接口的一个实例。

启动 JConsole

JConsole 是可执行文件,在 JDK_HOME / bin 目录 其中 JDK_HOME 是在 Java 开发工具包(JDK)的安装目录。如果此目录是在您的系统路径,你可以开始只需键入命令jconsole。否则,您必须键入可执行文件的完整路径。

命令语法

您可以使用 JConsole 来监视本地应用程序以及远程应用程序。


注 -使用 JConsole 监视本地应用程序在开发和创建原型是非常有用的,但不推荐用于生产环境,因为 jconsole 本身也消耗大量的系统资源。远程监控建议隔离被监视机器。


jconsole 命令的语法完整的参考,请 参阅 JConsole 的命令手册页:Java 监视和管理控制台。

设置本地监控

在命令行中键入以下命令启动 JConsole 的。

JConsole

当 JConsole 的启动时,您将获得一个本地运行 JConsole 的可以连接到的所有的 Java 应用程序的选择。

如果您要监控的特定应用程序,你知道该应用程序的进程 ID,那么你也可以启动 JConsole 连接到该应用程序。此应用程序必须和 JConsole 运行在相同的用户 ID 下。该命令的语法以下。

%JConsole 中 processID

以上 的 processID是应用程序的进程 ID(PID)。您可以用以下方式确定一个应用程序的 PID:

  • 在 UNIX 或 Linux 系统,可以 使用 ps 命令找到正在运行的Java 实例的 PID。
  • 在 Windows 系统上,您可以使用任务管理器,找到 java 或者 javaw 进程的 PID。
  • 您还可以使用 jps 命令行实用程序来确定的 PID。见的手册页的 Java 虚拟机进程状态工具。

例如,如果你确定,记事本 应用程序的进程 ID 是 2956,那么你可以用下面的命令启动 JConsole。

JConsole 2956

jconsole 和被监视的应用程序必须运行在相同的用户下,拥有管理和监控系统使用的操作系统的文件权限。如果你不指定一个进程 ID,jconsole 会自动检测所有本地 Java 应用程序,并显示一个对话框,让你选择一个(参阅连接到 JMX 代理)。

欲了解更多信息,请参阅本地监控和管理。

 

设置远程监控

要启动远程监控 JConsole 的,您可以使用下面的命令语法。

JConsole 主机名 portNum

主机名是需要监听的主机,portNum是你启动 Java 虚拟机时指定的 JMX 代理的端口号。欲了解更多信息,请参阅远程监控和管理。

如果你不指定一个主机名 / 端口号的组合,那么 jconsole 会显示一个连接对话框(连接到 JMX 代理),让你输入一个主机名和端口号。

建立安全的远程监控

您也可以使用安全套接字层(SSL)进行安全的连接。命令启动 JConsole 的安全连接是在第 2 章,监控和管理使用 JMX 技术 启用 SSLJConsole的远程监控。

 

连接到一个 JMX 代理

如果您启动 jconsole 的时候指定的 JMX 代理连接到的参数,它会自动开始监视指定的 Java VM。您可以连接到不同的主机在任何时候通过选择连接 | 新连接,并输入必要的信息。

否则,如果你不提供任何参数,当您启动 JConsole 的,第一眼看到的是连接对话框。此对话框有两个选项,允许连接到本地或远​​程进程。

 

动态连接

在以前的版本的 Java SE 平台,应用程序,你想监测与 JConsole 的需要与下面的选项开始。

%,Dcom.sun.management.jmxremote

然而,与 Java SE 6 平台提供的 JConsole 的版本,可以连接到任何应用程序,支持附加的 API。换句话说,任何在 Java SE 6 HotSpot 虚拟机启动的应用程序由 JConsole 自动检测,并不需要使用上述的命令行选项开始。

 

JConsole 的连接到一个本地进程

如果你不提供连接到一个特定的 JMX 代理启动 JConsole 的,你会看到下面的对话框窗口。

 

图 3 - 1 创建一个连接到一个本地进程

JConsole JDK1.6 使用手册

本地进程选项列出所有运行在本地系统上且和 JConsole 程序相同的用户 ID 的 Java SE6 应用,包括进程 ID 和他们的类或参数信息。选择您要监视的应用程序,然后单击“连接”按钮。本地进程的名单中包括以下类型的 Java 虚拟机的运行的应用程序。

  • 启用管理代理的应用,包括 Java SE 6 平台 指定 Dcom.sun.management.jmxremote 选项 Dcom.sun.management.jmxremote.port 选项开始的 J2SE 5.0 平台上的应用。此外,名单中还包括任何应用程序,Java SE 6 平台上开始没有任何管理属性,但以后 JConsole 的重视,这使得在运行时管理代理。
  • 禁用管理代理,可连接的应用,应用程序在运行时禁用加载管理代。Java SE 6 平台上开始支持附加的 API 的应用程序, 支持动态的应用程序连接,启动管理代理可以不通过在命令行 指定 com.sun.management.jmxremote 或 com.sun.management.jmxremote.port 选项。如果选择此类应用程序连,将启用该应用的管理代理。在连接的例子所示的对话框图 3- 1 中,NetBeans IDE 和 jconsole 本身也均开始在 Java SE 6 平台的虚拟机。同时出现在正常的文本,这意味着,JConsole 的可以连接到它们。在图 3 - 1 中,JConsole 是选定的,值得注意的是可见的。
  • 禁用应用程序,不扣押,管理代理。这些措施包括开始的 J2SE 1.4.2 平台上的应用,或 J2SE 5.0 平台上开始 没有 Dcom.sun.management.jmxremote com.sun.management.jmxremote.port 选项​​。这些应用程序的显示表中显示为灰色和 JConsole 中无法连接到他们。字谜 应用程序在连接的例子所示的对话框图 3-1,没有任何的管理属性与 J2SE 5.0 平台的虚拟机开始启用 JMX 代理,并因此显示为灰色,无法选择。

图 3 - 2 没有管理代理尝试连接到应用程序启用

JConsole JDK1.6 使用手册

 

 

JConsole 的连接到远程进程

当打开连接对话框,你也可以连接到远程进程。

 

图 3 - 3 创建一个连接到远程进程

JConsole JDK1.6 使用手册

要监控远程 Java 虚拟机上运行的过程中,你必须提供下列资料。

  • 主机名:Java 虚拟机正在运行的机器上的名称。
  • 端口号:当你启动 Java 虚拟机指定 JMX 代理端口号码。
  • 用户名和密码:用户名和密码才能使用(需要监测只有通过 JMX 代理,需要密码验证的 Java 虚拟机)。

有关设置 JMX 代理的端口号的信息,请参阅启用远程管理。有关用户名和密码的信息,请参阅使用密码和访问文件。 

 

使用 JMX 服务 URL 连接

您还可以使用远程进程选项指定他们的 JMX 服务 URL 连接其他 JMX 代理,用户名和密码。一个 JMX 服务 URL 的语法要求您提供用于进行连接的传输协议,以及服务接入点。

 

图 3 - 4 连接到一个 JMX 代理使用的 JMX 服务 URL

JConsole JDK1.6 使用手册

如果 JMX 代理使用一个不包含在 Java 平台上的连接器,你需要添加连接器类到类路径中,如下所示。

%JConsole- J - Djava.class.path = JAVA_HOME / lib 中 / jconsole.jar:JAVA_HOME /

 

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-02/113412p2.htm

查看 VM 信息

VM 摘要“选项卡提供了对 Java 虚拟机的信息。

图 3 -11 虚拟机摘要选项卡

JConsole JDK1.6 使用手册

在此选项卡中提供的信息包括以下内容。

  • 摘要
    • 运行时间:开始以来,Java 虚拟机的时间总额。
    • 进程的 CPU 时间:Java VM 的开始,因为它消耗的 CPU 时间总量。
    • 编译总时间:累计时间花费在 JIT 编译。
  • 主题
    • 活动线程:目前现场守护线程,加上非守护线程数量。
    • 峰值:活动线程的最高数目,因为 Java 虚拟机开始。
    • 守护线程:当前的活动守护线程数量。
    • 总线程:开始自 Java 虚拟机启动的线程总数,包括非守护进程,守护进程和终止的线程。
    • 当前类装载:目前加载到内存中的类数目。
    • 总类加载:从 Java VM 开始加载到内存中的类总和,包括那些后来被卸载的类。
    • 已卸载类总数:从 Java 虚拟机开始从内存中卸载的类的数目。
  • 内存
    • 当前的堆大小:目前所占用的堆的千字节数。
    • 分配的内存:堆分配的内存总量。
    • 最大堆最大值:堆所占用的千字节的最大数目。
    • 待最后确定的对象:待最后确定的对象的数量。
    • 花在执行 GC 的 垃圾收集器:包括垃圾收集,垃圾收集器的名称,进行藏品的数量和总时间的信息。
  • 操作系统
    • 总物理内存
    • 空闲物理内存
    • 分配的虚拟内存
  • 其他信息
    • VM 参数:输入参数的应用程序通过 Java 虚拟机,不包括的主要方法的参数。
    • 类路径 是由系统类加载器用于搜索类文件的类路径。
    • 库路径:加载库时要搜索的路径列表。
    • 引导类路径:引导类路径是由引导类加载器用于搜索类文件。

 

监控和​​管理的 MBean

MBeans 选项卡显示的信息平台 MBean 服务器中的一个通用的方法对所有已注册的 MBean。MBeans 选项卡允许您访问平台 MXBean。此外,您还可以监控和管理您的应用程序的 MBean。

 

图 3 -12 MBeans 选项卡

JConsole JDK1.6 使用手册

左侧的树显示当前正在运行的所有 MBean。当您选择树中的一个 MBean, MBeanInfo 及其 MBean 描述符都显示在右侧,并在它下面的树中出现的任何属性,操作或通知。

所有平台 MXBean 和各种操作和属性是通过 JConsole 的 MBeans 选项卡访问。

 

构建 MBean 的树

默认情况下,基于对象的名称树中示 MBean。jconsole 会使用确切的键属性列表构建 MBean 树,构建时调用 ObjectName.getKeyPropertyListString()方法返回类型的第一个 key,和 j2eeType 的第二个 key,如果存在的话。

然而,依靠 ObjectName 的关键属性的默认顺序,有时可以导致意外的结果。例如,如果两个对象的名字也有类似的 key,但其 key 的排序不同,那么相应的 MBean 将不会在 MBean 树相同的节点下创建。

例如,假设您创建具有下列名称的三角 MBean 的对象。

com.sun.example:type=Triangle,side=isosceles,name=1
com.sun.example:type=Triangle,name=2,side=isosceles
com.sun.example:type=Triangle,side=isosceles,name=3

至于 JMX 技术而言,这些对象将被视为在完全一样的方式。在对象名称的键的顺序不作任何 JMX 技术的差异。但是,如果 JConsole 连接这些 MBean,并使用默认的 MBean 树渲染,那么对象 com.sun.example:type=Triangle,name=2,side=isosceles 最终会被节点 Triangle 下创建,在一个节点 2,将包含一个子节点称为 isosceles。其他两个 isosceles,name= 1 name= 3,将分设在不同的节点 isosceles 下,如图 3 -13 所示。

 

图 3 -13 意外的 MBean 树渲染范例

JConsole JDK1.6 使用手册

您可以指定 MBean 提供一个有序的键属性列表来避免这个问题。当你在命令行启动 JConsole 时,通过设置系统属性com.sun.tools.jconsole.mbeans.keyPropertyList:

% jconsole -J-Dcom.sun.tools.jconsole.mbeans.keyPropertyList=key[,key]*

键属性列表需要一个逗号分隔,在您所选择的,key的地方必须是一个字符串,代表一个对象的名称键或一个空字符串的顺序。如果在列表中指定的一个 key 并不适用于一个特定的 MBean,那么该 key 将被丢弃。bjectName.getKeyPropertyListString()返回值定义的键的顺序,将用于 完成 keyPropertyList 定义的键顺序。因此,指定一个空的键列表仅仅意味着 jconsole 会显示 MBean 的ObjectName 的 键。

因此,返回到上面提到的例子,你可以选择指定的 keyPropertyList 系统属性启动 JConsole:

% jconsole -J-Dcom.sun.tools.jconsole.mbeans.keyPropertyList=side,name

JConsole 中会产生的 MBean 树如图 3-14 所示。

 

图 3 -14 范例的 MBean 树构造使用keyPropertyList

JConsole JDK1.6 使用手册

在图 3 -14 中 side 第一,name 第二。因为 type 不是在指定的键属性列表 类型的key,因此 MBean 树算按默认次序排序。

根据公约所定义的 JMX 最佳实践准则的对象的名称,类型的 关键应该永远是第一位的。因此,要尊重本公约应从以下系统属性 JConsole 的。

%JConsole 的 - J - Dcom.sun.tools.jconsole.mbeans.keyPropertyList =type,side,name

上面的命令将导致 JConsole 的渲染如图 3 -15 中所示

 

图 3 -15 范例的 MBean 树尊重 JMX 的最佳实践构建

JConsole JDK1.6 使用手册

这显然远远超过难理解的图 3 -13 和图 3 -14 中显示的 MBean 的树。

MBean 属性

选择“属性”节点显示一个 MBean 的所有属性,图 3 -16 显示了 Threading 的所有属性。

 

图 3 -16 查看所有的 MBean 属性

JConsole JDK1.6 使用手册

选择单个 MBean 属性, MBeanAttributeInfo,会显示在右窗格中,如图 3 -17。

 

图 3 -17 查看单个的 MBean 属性

JConsole JDK1.6 使用手册

您可以通过双击右侧窗体中粗体文本显示更多信息。例如,如果你点击HeapMemoryUsage 对应的 value 值,你会看到一个图表:图 3 -18。

 

图 3 -18 显示的属性值

JConsole JDK1.6 使用手册

双击数字属性值将显示一个图表,图,数值的变化。例如,双击上的垃圾收集器的 MBean 的 PS Marksweep CollectionTime属性,将显示执行垃圾收集所花费的时间。

您还可以使用 JConsole 设置可写属性的值。一个可写的属性的值显示为蓝色。在这里你可以看到内存的 MBean 的详细属性。

 

图 3 -19 设置可写的属性值

JConsole JDK1.6 使用手册

您可以通过点击,然后编辑它们的属性。例如,启用或禁用在 JConsole 详细的垃圾收集器跟踪,选择在 MBeans 选项卡的 MXBean 和详细的 属性设置为真或假。同样,类加载的 MXBean 也有 详细的 属性,可以设置启用或禁用类加载的详细跟踪。

 

MBean 操作

选择“操作”节点显示一个 MBean 的所有操作。你可以通过按钮去调用方法. 图 3 -20 所有线程的方法。

 

Figure 3-20 Viewing All MBean Operations

JConsole JDK1.6 使用手册

选择一个 MBean 树中选择一个方法,可以看到该方法的描述信息,如图 3-21 .

 

Figure 3-21 Viewing Individual MBean Operations

JConsole JDK1.6 使用手册

MBean 通知

在左边的树中选择订阅,并点击订阅按钮。右侧将显示收到的通知。如图 3 -22。

 

Figure 3-22 Viewing MBean Notifications

JConsole JDK1.6 使用手册

选择单个 MBean 通知,MBeanNotificationInfo 会显示在右窗格中,如图 3 -23 所示。

 

Figure 3-23 Viewing Individual MBean Notifications

Subscribing to receive MBean Notifications.

HotSpot 的诊断的 MXBean

JConsole 的 MBeans 选项卡还允许你告诉 HotSpot 虚拟机执行堆转储,并通过 HotSpotDiagnostic MXBean 的 VM 选项,以获取或设置。

 

Figure 3-24 Viewing the HotSpot Diagnostic MBean

JConsole JDK1.6 使用手册

您可以手动执行堆转储调用 com.sun.management.HotSpotDiagnostic MXBean 的 dumpheap 命令操作。此外,您可以指定 HeapDumpOnOutOfMemoryError Java VM 选项,使用 setVMOption 操作,因此,VM 执行堆转储时自动收到一个 OutOfMemoryError。

创建自定义选项卡

除了现有的标准选项卡,你可以添加自己的自定义选项卡 JConsole 的,执行自己的监视活动。JConsole的插件 API 提供了一种机制,例如,通过它可以添加标签来访问自己的应用程序的 MBean。JConsole这样的插件 API 定义 com.sun.tools.jconsole.JConsolePlugin 抽象类,你可以扩展到建立您的自定义插件。

如上所述,您的插件必须继承 JConsolePlugin,并实现 JConsolePlugin getTabs 和 newSwingWorker 方法。getTabs 方法返回的选项卡的列表被添加到 JConsole 的,或者一个空列表。newSwingWorker 方法返回 SwingWorker 的负责插件的 GUI 更新。

您的插件必须提供一个 Java 归档(JAR)的文件,该文件包含一个名为 META-INF/services/com.sun.tools.jconsole.JConsolePlugin 文件。这个 JConsolePlugin 文件本身包含的所有插件完全合格的类名要添加新 JConsole 的标签列表。JConsole中使用的服务提供商的装卸设施,来查找并加载插件。你可以有多个插件。
要加载到 JConsole 的新的自定义插件,启动 JConsole 的用下面的命令:

%  jconsole -pluginpath plugin-path

在上面的命令,插件路径指定要查找的 JConsole 插件的路径。这些路径可以是目录名或 JAR 文件,并可以指定多个路径,用你的平台的标准分隔符字符。

一个例子 JConsole 的插件提供了 Java SE 6 平台。JTop 应用程序是 JDK 的演示,展示了在应用程序中运行的所有线程的 CPU 使用率。这个演示是有用的识别,具有较高的 CPU 消耗的线程,它已被更新作为一个 JConsole 的插件以及一个独立的 GUI 使用。JTop 是捆绑在一起的 Java SE 6 平台,作为一个演示应用程序。您可以运行的 JTop 插件 JConsole 中运行以下命令:

%JDK_HOME/bin/jconsole -pluginpath JDK_HOME/demo/management/JTop/JTop.jar

如果您连接到这种 JConsole 的实例,你会看到,JTop 标签已被添加,显示运行各个线程的 CPU 使用率。

 

Figure 3-25 Viewing a Custom Plug-in Tab

JConsole JDK1.6 使用手册

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计14532字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7973962
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...