Java自带了一个监控管理控制台jconsole,它是一个性能监控工具。它提供了有关Java进程内存、线程、类加载、JVM摘要、MBean等的实时信息,并且可以提供上述内容的参考。问题。
1. JVM 一些参数
在启动jconsole之前,我们先回顾一下JVM的一些主要参数。
-Xms 初始/最小堆内存大小-Xmx 最大堆内存大小-Xmn 年轻代大小-XX:NewSize 年轻代大小-XX:MaxNewSize 年轻代最大-XX:NewRatio 老年轻代比例-XX:MaxPermSize 永久代最大-XX:PermSize 持久代初始化部分信息表述不正确Xms 和Xmx 设置JVM 内存大小。除了为开发人员保留的堆内存之外,JVM 还拥有非堆内存。
读者可能会注意到,年轻代大小的划分有三种方法:-Xmn方法、-XX:NewSize + -XX:MaxNewSize方法、-XX:NewRatio方法。优先级从最高到最低依次为-XX:NewSize + -XX:MaxNewSize、-Xmn 和-XX:NewRatio。即优先级高的在前面,优先级低的在后面。它将被覆盖。
2. 本机启用 jconsole 以监控 Java 进程
CMD切换到%JAVA_HOME%/bin目录,直接运行jconsole
输入,打开Java监控和管理控制台。
本地进程列表显示所有本地运行的Java 进程。双击感兴趣的进程(例如PID为8504的进程)以监视该进程。
3. 远程监控 Java 进程
要远程监视Java 进程,必须在启动时启用JMX。
以远程主机上的Tomcat为例,首先在jmx中找到可用的远程端口(例如9999)。
没有好消息~在%TOMCAT_HOME%/bin/catalina.sh文件前添加以下配置:
[普通] 显示普通副本
您想打印吗?
JAVA_OPTS='-Xms1024m -Xmx2048m -XX:MaxPermSize=128m -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false' 如图表
接下来,重新启动tomcat,打开本机上的Java监控和管理控制台,并在Remote Process中输入远程主机名和jmx端口号。
单击“连接”按钮可实时监控远程主机上的Tomcat。
4. jconsole 提供的一些有用信息
让我们看一下下面步骤4 中的案例。
4.1. 检查JVM配置信息是否有效
单击VM 摘要并验证您配置的一些JAVA_OPTS 参数是否已启用。
4.2.实时监控Tomcat线程池和自定义线程池的数量
你还在为Tomcat线程池的神秘所困惑吗?你还被自定义线程池的“黑匣子”所困扰吗?看看下图吧。
从上图可以看到,Tomcat刚刚启动。只有一个http-8080-Acceptor-0 线程。让我们回到项目来检查一下。
http-8080 线程数突然增加到8个。一切都清楚并在掌控之中吗?
4.3. 实际内存使用情况
单击Java监控管理控制台中的Memory叶项,可以查看Tomcat堆内存使用情况。
图表有很多选项。
看看Eden区:
Eden区的走势与整个堆内存的走势基本一致。我们来看看幸存者区。
幸存者区趋势短期内相对稳定。看看老一代区域。
这个趋势比较稳定,如果对比Survivor和Old Gen区域的两张照片,可以清楚地看到19:58左右有一批物体从Survivor区域移动到了Old Gen区域。最后,我们来看看彼尔姆地区。
这种趋势是最稳定的。大约在19:58处,当我们访问该项目时,我们可以清楚地看到一些新的类和其他静态资源被加载到JVM中。 5.4 中加载的类数量图也支持这一点。
4.4. Tomcat加载状态
5。与jmap 一起使用。
首先确保Tomcat进程的PID为13863,然后运行jmap -heap 13863。
“Heap Configuration”下列出的内容基本上就是您刚刚配置的内容。例如,MaxHeapSize 为2048 MB,MaxPermSize 为128 MB。这与4.1 相同。
版权声明:本文转载于今日头条,版权归作者所有。如有侵权,请联系本站编辑删除。