其实在 JDK 5 中已经新加入了这个功能了. 现在的 JDK 已经内置了对 VM 的监控功能.
关于 JDK 5 中如何使用这个工具可以参考这里:
http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html
http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html
JDK 5 和 JDK 6 中 JConsole的主要区别是:
JDK 5中 Java应用(JVM)启动时必须将 JMX注册到 MBeanServer中,JConsole才能监控到该JVM。
即Java应用启动时要加 -Dcom.sun.management.jmxremote 启动参数。
JDK 6中 JConsole可以从%TMP%\hsperfdata_user ( user 为当前登录用户名)目录下得到启动的JVM的信息。
因此Java应用启动时可以不用添加 -Dcom.sun.management.jmxremote 启动参数。
JDK 5使用JConsole的 如:
启动Tomcat
在catalina.bat中
echo Using CATALINA_BASE: %CATALINA_BASE% 前面加上下面一行
set JAVA_OPTS=%JAVA_OPTS%
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port="9004"
-Dcom.sun.management.jmxremote.authenticate="false"
-Dcom.sun.management.jmxremote.ssl="false"
启动Eclipse中的Jboss
使用jconsole <pid>时,
I get the following error message: "<pid> is not a managed VM."
(另一种表现是:本地标签处没有显示任何可用PID),
表明没有开启一个JVM options。
解决方法(我的web是部署在Jboss中):
Eclipse中-->window-->Preference-->myeclipse-->Servers-->Jboss4-->JDK-->Optional JVM arguments
填写"-Dcom.sun.management.jmxremote",就可以了
JDK 6 中这个工具变的更加好用了.
jconsole 可以很方便的监控本机的所有 Java 应用和远程的应用.
监控本地应用
首先就是启动您要监控的应用, 例如我用 JDK 1.6 来启动了 Tomcat, 或者 Eclipse 也可以, 可以在任务管理器(Ctrl+Alt+Del可以调出来, 或者在任务栏点击右键)里看到进程ID, 例如我这里是 6132.
接着在 JDK 安装目录中(<JDK_HOME>/bin/jconsole.exe)启动 jconsole.exe (双击或者在 cmd 里面敲入 jconsole), 主界面会提示您建立一个新连接:
可以看到进程ID, 选择它, 然后点击"连接". 这些 ID 必须都是用 JDK 1.6 的 java.exe 启动的, 否则在列表里看不到.
JConsle 能监控内存,线程,类的数目和CPU然后点击各个 Tab 可以看到详细的输出, 详细的输出包括:
内存: 堆/非堆, 峰值, 内存的各个部分, 例如 Perm, Eden 等的大小曲线图.
线程: 峰值, 所有线程的列表, 堆栈跟踪(哪个对象中的线程)等. 还可以强制执行GC.
类: 峰值, 类总数曲线图.
MBean: 一些 JVM 参数的详细 MBean 信息.
监控远程进程
首先需要在运行的应用上启用远程管理, 参数如下(简单期间就不加用户验证了):
java -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar ../demo/jfc/Java2D/Java2Demo.jar
然后连接的时候选择远程进程, 地址输入:
localhost:1090
即可.当然在别的电脑上(一般是局域网)可以输入那个电脑的IP.
综述: 使用 JConsole 可以简单的监控 Server 状态, 但是本身要占一定的资源, 不过 JVM 自带的监控, 理论上讲应该是占资源很小很小的, 可以用它来方便的了解 Web 服务器应用进程的状态. 如果要调优应用, 还是使用 JProfiler 等工具更好一些, 当然它们占的资源也更大.
后记:
jdk1.6.0\demo\management\MemoryMonitor
这里带了个很好的画内存曲线图的例子... 大家改改就可以实现同时监控多台 Server 的内存曲线了....
分享到:
相关推荐
JConsole作为一款免费的JDK内置工具,虽然在功能上无法与一些高级的商业化监控工具相媲美,但凭借其强大的稳定性、易用性和广泛的适用性,在日常开发和运维工作中仍然发挥着不可替代的作用。无论是对于初学者还是...
【标题】"jdk6-linux"指的是Java Development Kit (JDK) 的6版,专为Linux操作系统设计...虽然现在最新的JDK版本已经更新到了JDK17,但JDK6在许多遗留系统和项目中仍然占据一席之地,特别是那些需要向后兼容性的场合。
在JDK8中,JConsole是一个强大的可视化工具,它允许开发者实时监控Java虚拟机(JVM)的状态,包括内存使用、线程活动、类加载、虚拟机概要以及管理MBeans等关键信息。 **JConsole工具** JConsole是Java平台的标准...
描述中的"JAVA JDK6 1.6.45 Windows 32位版本,生产环境中亲自安装好用"强调了这个特定版本(1.6.45)在实际生产环境中得到了验证,表明它是稳定且可靠的。"亲自安装好用"意味着它经过了实际测试,证明了其在生产...
在JDK1.8中,jtop与jconsole结合使用,可以有效提升性能分析的效率。 安装jtop插件的过程通常是这样的: 1. 首先,确保你已经安装了JDK1.8,并且JVisualVM和jconsole位于`%JAVA_HOME%\bin`目录下。 2. 下载`...
在JDK 1.6版本中,JConsole提供了丰富的图形用户界面,允许开发者和系统管理员实时查看和管理Java虚拟机(JVM)的状态。这个压缩包文件包含了JConsole的源代码,对于理解JConsole的工作原理、学习Java管理扩展(Java...
在JDK 6中,HotSpot虚拟机使用了Just-In-Time (JIT) 编译器,能够动态优化代码,提高运行效率。 3. **JRE**(Java Runtime Environment):包含了运行Java应用程序所需的基本组件,包括Java虚拟机(JVM)、类库以及...
5. **验证安装**:最后,通过在命令行输入`java -version`和`javac -version`命令,检查Java和Java编译器的版本,确认JDK6已成功安装。 JDK6包含的主要工具和组件有: - **javac**: Java编译器,将源代码编译成可...
JDK6 中的 JVM 在性能和内存管理上有了显著提升。 4. **Java 应用程序启动器 (java.exe)**:用于启动 Java 应用程序。 5. **Java 归档工具 (jar)**:用于打包和管理 Java 类库,创建 `.jar` 文件。 6. **Java ...
JDK 6 版本是 Java 平台标准版的一个重要里程碑,它在2006年发布,为开发者提供了大量的新功能和改进。在 Mac 操作系统上安装 JDK 6 对于那些需要支持旧版应用程序或进行兼容性测试的开发者至关重要。 首先,JDK 6 ...
5. **JDBC 4.0**:JDBC API在JDK 6中升级到了4.0版本,引入了自动连接管理、结果集的滚动和分页以及批处理更新等功能,提升了数据库访问的效率和便利性。 6. **改进的内存管理和性能**:JDK 6对垃圾收集器进行了...
- **Nashorn JavaScript引擎**:虽然在JDK 6中未完全实现,但JDK 7开始引入了Nashorn JavaScript引擎,为Java与JavaScript的交互提供了更高效的方式。 - **改进的Swing和JavaFX**:UI组件得到了增强,包括更好的...
5. **数据库连接(JDBC)**:JDBC 4.0在JDK 6中引入,提供了自动发现和注册驱动程序的机制,简化了数据库连接过程。 6. **Swing和JavaFX**:尽管JavaFX是在JDK 7中正式推出的,但JDK 6已经预示了其发展方向,Swing...
在本篇文章中,我们将深入探讨JDK 6u45,这是一个专为Windows x64平台设计的版本。 **1. JDK 6的版本历史** JDK 6,也被称为Java SE 6,是Java平台标准版的第六个主要版本。它的发布标志着Java语言和平台的许多...
3. **配置环境变量**:为了全局使用JDK,需要在系统环境变量中添加JDK的路径。编辑`~/.bashrc`或`~/.bash_profile`文件,添加以下行: ``` export JAVA_HOME=/path/to/your/jdk-installation-dir export PATH=$...
3. **自动装箱与拆箱**:JDK 5.0中,原始类型(如int)与对应的包装类(如Integer)之间可以自动进行装箱(将原始类型转换为对象)和拆箱(将对象转换为原始类型)操作,简化了代码编写。 4. **可变参数(Varargs)...
JDBC(Java Database Connectivity)在JDK6中得到了增强,包括新的PreparedStatement批量更新功能,提高了数据库操作的性能。此外,JDBC驱动程序模型也进行了改进,允许更灵活的驱动程序实现和更好的兼容性。 在...
在这个文件中,包含了JDK 17的所有中文API(Application Programming Interface)文档,API是开发者用来构建Java应用程序的接口集合,包括类、接口、枚举和异常等。 **知识点详解:** 1. **JDK 17新特性:** JDK ...
在本文中,我们将深入探讨JDK 6的关键特性和它在开发过程中的作用。 首先,JDK 6是Java平台的重要里程碑,它首次发布于2006年,为开发者带来了许多新特性。例如,增强的Swing组件,使得GUI应用开发更加便捷;新的...
JDK1.6,也称为Java 6,是Java平台的一个重要版本,它在2006年发布,并且在后续的几年里经历了一系列的更新和增强。"jdk-6u45-windows-x64"指的是这个版本的第45个更新,专门针对Windows操作系统64位架构设计。 在...