文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用JConsole监控

2024-04-02 19:55

关注

1.介绍

JConsole图形用户界面是符合Java管理扩展(JMX)规范的监视工具,可以监测有关在Java平台上运行的应用程序的性能和资源消耗的信息。

启动JConsole

jconsole [ options ] [ connection ... ]

connection = pid | host:port | jmxURL

-interval=n:设置更新间隔(默认4秒)
-notile :不平铺 (for two or more connections).

-pluginpath plugins:指定目录,及jar路径。

jar中必须包含 META-INF/services/com.sun.tools.jconsole.JConsolePlugin

关于jmxURL,可以参考javax.management.remote.JMXServiceURL说明。

2.本地监控

% jconsole
#进程
% jconsole processID

使用JConsole监控

3.远程监控

%jconsole hostName:portNum

使用JConsole监控

3.1远程监控配置

设置此属性注册了Java VM平台的MBean并通过专用接口发布了远程方法调用(RMI)连接器,以允许JMX客户端应用程序监视本地Java平台,即与JMX客户机在同一台机器上运行的Java VM 。

3.1开启JMX端口

com.sun.management.jmxremote
#JDK6以前版本,需要为Java SE示例应用程序记事本启用JMX代理
%cd JDK_HOME /demo/jfc/ Notepad
%java -Dcom.sun.management.jmxremote -jar Notepad.jar
#JDK以后版本可以启用开箱即用的管理代理监视和管理
%java -jar Notepad.jar
#portNum是要启用JMX RMI连接的端口号
#设置此属性将使用众所周知的名称“jmxrmi”在指定端口的私有只读注册表中发布一个附加的RMI连接
com.sun.management.jmxremote.port = portNum

对于生产系统,使用SSL客户端证书来验证用户管理的客户端主机和密码认证。

有关详细信息,请参阅使用SSL和 使用LDAP身份验证的主题。

3.2使用密码认证

#开启或禁用
com.sun.management.jmxremote.authenticate=false

3.2.1 LDAP(不熟悉,不讨论)

com.sun.management.jmxremote.login.config

3.2.2 密码认证

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8999 
\-Dcom.sun.management.jmxremote.ssl=false 
\-Dcom.sun.management.jmxremote.authenticate=true 
\-Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password 
\-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access

其中com.sun.management.jmxremote.password.file可以从 JRE_HOME/lib/jmxremote.password.template模板获得;

com.sun.management.jmxremote.access.file可以同JRE_HOME/lib/jmxremote.access模板获得

4.功能

4.1选项卡

使用JConsole监控

概述(Overview):显示有关Java VM和监视值的概述信息。
内存(Memory):显示有关内存使用的信息。
线程(Threads):显示有关线程使用的信息。
类(Classes):显示有关加载类的信息。
VM(VM Summary):显示有关Java VM的信息。

MBeans(MBeans):显示有关MBean的信息。

4.1.1概述信息

“概述”选项卡显示有关CPU使用情况,内存使用情况,线程计数以及Java VM中加载的类的图形监视信息,均在单个屏幕中。
使用JConsole监控

JConsole允许您将图表中显示的数据保存在逗号分隔值(CSV)文件中。要从图表保存数据,只需右键单击任何图表,

4.1.2 内存选项卡

“内存”选项卡提供有关内存消耗和内存池的信息。

使用JConsole监控

“ 详细信息”区域显示几个当前内存指标:
已使用(Used):当前使用的内存量,包括所有对象占用的内存,可访问和不可访问。

承诺(Committed):保证可供Java VM使用的内存量。承诺的内存量可能会随时间而变化。Java虚拟机可能会将内存释放到系统,并且已提交内存的数量可能小于启动时初始分配的内存量。提交的内存量将始终大于或等于已使用的内存量。

最大值(Max):可用于内存管理的最大内存量。其价值可能会改变或未定义。即使所使用的数量小于或等于最大值(例如,当虚拟内存系统较低时),如果Java VM尝试增加使用的内存大于已提交的内存,则内存分配可能会失败。

GC时间:在垃圾收集上花费的累积时间和总调用次数。它可能有多行,每行都表示Java VM中使用的一个垃圾收集器算法。

右下方的条形图显示堆和非堆内存中的内存池所消耗的内存。当使用的内存超过内存使用阈值时,该条将变为红色。您可以通过MemoryMXBean的属性设置内存使用阈值。

    Heap and Non-Heap

非堆内存包括所有线程之间共享的方法区域和Java VM的内部处理或优化所需的内存。它存储每个类的结构,例如运行时常量池,字段和方法数据,以及方法和构造函数的代码.

堆内存是运行时数据区域,Java VM为此分配所有类实例和数组的内存.

内存池和内存管理器
内存池和内存管理器是Java VM内存系统的关键方面。
1.一个内存池表示Java虚拟机管理的存储区。Java VM具有至少一个内存池,并且可能在执行期间创建或删除内存池。内存池可以属于堆或非堆内存。
2.一个内存管理器管理一个或多个存储池。垃圾回收器是一种负责回收由不可达对象使用的内存的内存管理器。Java VM可能有一个或多个内存管理器。它可能会在执行期间添加或删除内存管理器。内存池可以由多个内存管理器管理。

垃圾收集

有关更多信息,请参阅使用5.0 HotSpot VM调整垃圾收集。

使用JConsole监控

4.1.3监控线程使用
“线程”选项卡提供有关线程使用的信息。

使用JConsole监控

左下角的线程列表列出了所有活动线程。如果在“过滤器”字段中输入字符串,“线程”列表将只显示名称包含您输入的字符串的线程。单击“线程”列表中的线程名称,以显示有关该线程的信息,包括线程名称,状态和堆栈跟踪。
图表显示随着时间的推移活动线程数。显示两行。
红色:峰值线程数
蓝色:活动线程数。

线程MXBean提供了几个其他有用的操作,这些操作未被“线程”选项卡覆盖。
findMonitorDeadlockedThreads:检测对象监视器锁上是否有任何线程死锁。此操作返回一系列死锁的线程ID。
getThreadInfo:返回线程信息。这包括名称,堆栈跟踪和线程当前被阻止的监视器锁(如果有)以及哪个线程持有该锁以及线程争用统计信息。
getThreadCpuTime:返回给定线程消耗的CPU时间。

2.检测死锁线程
使用JConsole监控

检测死锁按钮将检测涉及对象监视器和java.util.concurrent可自动同步器的死锁周期(请参阅java.lang.management.LockInfo的API规范 文档)。在Java SE 6中添加了对java.util.concurrent锁的监视支持 。如果JConsole连接到Java SE 5.0 VM,则检测死锁机制将只会发现与对象监视器相关的死锁。JConsole不会显示与所有同步器相关的任何死锁。

4.1.4 监控类加载

“类”选项卡显示有关类加载的信息。
使用JConsole监控
红线是加载的类的总数(包括随后卸载的类)。
蓝线是当前加载的类的数量。

选项卡底部的“详细信息”部分显示自Java VM启动以来加载的类的总数,当前加载的数量和卸载的数量。您可以通过选中右上角的复选框将类加载跟踪设置为详细输出。
4.1.5 查看VM信息
“VM摘要”选项卡提供有关Java VM的信息。

使用JConsole监控

参考资料

http://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html

http://docs.oracle.com/javase/8/docs/technotes/tools/unix/jconsole.html

http://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.html

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯