`
wengge
  • 浏览: 39462 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

VisualVM监控备忘(1)

阅读更多

VisualVM简介

简单说来,VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力。所有这些都是免费的!它囊括的命令行工具包括jstat, JConsole, jstack, jmap 和 jinfo,这些工具与JDK的标准版本是一致的。

你可以使用VisualVM生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和CPU分析,同时它还支持在MBeans上进行浏览和操作。尽管VisualVM自身要在JDK6这个版本上运行,但是JDK1.4以上版本的程序它都能监控。

对于我来说,这些功能都是至关重要的。以前我一直在使用如YourKit这样的一些付费软件来检测我的应用软件,但现在我可以用VisualVM这样一个开源工具来实现同样的功能。更何况,有谁比能Sun公司更了解JVM呢?

如何获取VisualVM

VisualVM的一个最大好处就是,它已经在你的JDK bin目录里了,只要你使用的是JDK1.6 Update7之后的版本。点击一下jvisualvm.exe图标它就可以运行了。

你所需要做的只是点一下jvisualvm.exe,就能启动它。运行中的所有Java应用程序将显示在右边的导航栏。你会发现根本不需要在VisualVM 里亲自为你的应用程序注册,因为它们全都会自动显示出来。你甚至还可以在导航栏里查看到远程的应用程序。

显示为“未知进程”(pid为5392)的程序是Eclipse
显示为“未知进程”(pid为5392)的程序是Eclipse

使用VisualVM

VisualVM有很多令人眼前一亮的功能,它能使你:

◆监控应用程序的性能和内存占用情况

◆监控应用程序的线程

◆分析(Profile)应用程序性能和内存分配情况

◆进行线程转储(Thread Dump)或堆转储(Heap Dump)

◆分析核心转储(Core Dump)

◆保存快照以便脱机分析应用程序。

用VisualVM评估IDE

我很想用VisualVM 做点什么,于是我决定,用它来对目前最先进的三个IDE进行评测。为此我特意新安装了 NetBeans 6.5.1 (JavaSE only version) , Eclipse (for Java Developers) 和 IntelliJ IDEA (8.1.2).

测试如下:

◆在VisualVM 中运行内存分析器(Memory Profiler)

◆在IDE中创建一个新的项目

◆创建一个简单的类,这个类只有一个可以打印“Hello World"的main方法

◆保存内存分析结果

◆生成这个应用程序的堆转储(Heap Dump)

◆从VisualVM 的监视视图(Monitor View)里获取信息

◆重新启动IDE,使用CPU分析器(CPU Profiler),在IDE中执行相同的步骤

◆保存CPU分析器(CPU Profiler)的结果

我意识到,CPU和内存评测其实是可以同时进行的,但为了便于下文的解释,我特意将它们分别进行。

我用IntelliJ做测试时,发现只有用我自己的JDK才能启动它,而不能用它自带的。虽然我太不熟悉这个IDE,但我发现当我用JSDK创建新工程时,它必须解析JDK中的文件。

此外,请注意,这些IDE都是我刚刚才下载的默认版本,没有针对Java开发作什么优化处理。

堆转储

我发现要对软件进行全面对比时,最好的手段是进行堆转储(Heap Dump)。这在程序运行时,使用VisualVM可以让这项工作变得十分太简单,你随时都可以右键单击那个程序,然后选择 Heap Dump 就可以了。

在个领域我评测的两个指标是:字节总数和类(class)的总数

NetBeans堆转储
NetBeans堆转储

Eclipse堆转储
Eclipse堆转储

IntelliJ IDEA 堆转储
IntelliJ IDEA 堆转储

NetBeans:

◆总的字节数:31,576,772

◆总的类数:10,583

IntelliJ :

◆总的字节数:76,582,715

◆总的类数:14,368

Eclipse:

◆总的字节数:62,112,960

◆总的类数:11,428

很明显,NetBeans只用到了Eclipse的一半都不到,IntelliJ则用去了多得多。

而在监视视图(Monitor View)里看着这些程序运行特别有意思,在这里我只关注了线程中的本地类,Eclipse差不多达到了25K,IntelliJ大概27K,NetBeans则在20K以下。

NetBeans 监控视图
NetBeans 监控视图

Eclipse监控视图
Eclipse监控视图

IntelliJ IDEA 监控视图
IntelliJ IDEA 监控视图

分享到:
评论

相关推荐

    tomcat6 单独启动做测试服务器备忘

    在标签中提到的“源码”和“工具”,意味着这个备忘可能还涵盖了如何查看和调试Tomcat源码,以及使用相关工具(如JConsole、VisualVM等)监控Tomcat的运行状态,分析性能和内存使用情况。 总之,这个备忘录是关于...

    Java八股文面经-精炼面试题资料整理(八股文)

    2. 性能监控:使用JConsole、VisualVM等工具进行性能监控。 3. 调优实践:分析内存、CPU、GC日志,找出性能瓶颈并优化。 以上就是Java八股文面经中的主要知识点,通过深入理解和掌握这些内容,Java开发者可以有效...

    java面试题与技巧

    3. 调优工具:掌握JConsole、VisualVM等JVM监控工具的使用。 九、Spring框架 1. 依赖注入:理解DI的概念,以及@Autowired、@Resource等注解的使用。 2. AOP:了解切面编程,包括通知、切点、织入等概念。 3. Spring...

    2015年腾讯Java工程师笔试题.zip

    2. 调优工具:了解JConsole、VisualVM等JVM监控工具的使用,能进行性能分析和调优。 这份笔试题集涵盖了Java程序员必备的核心技能,对于任何希望在Java领域深造或从事Java开发工作的人员来说,都是不可多得的学习...

    java面试题.zip

    4. 调优工具:如JConsole、VisualVM、JProfiler等,用于监控和优化JVM性能。 以上只是Java面试中可能涉及的一部分核心知识点,实际面试可能会更加深入,包括对具体框架(如Spring、MyBatis)的理解和使用,数据库...

    java笔试面试题 比较全

    - 调优:JVM参数设置,性能监控工具(VisualVM、JConsole)。 5. **IO/NIO**: - 流的概念:字节流与字符流,输入流与输出流,缓冲流,转换流。 - NIO(New IO):非阻塞I/O,选择器,通道,缓冲区。 6. **网络...

    java求职常见试题java面试题

    - 性能监控:使用JConsole或VisualVM工具进行性能分析 10. **设计模式**: - 创建型模式:单例、工厂、建造者、原型、代理 - 结构型模式:适配器、装饰器、桥接、组合、外观、享元、代理 - 行为型模式:责任链...

    JAVA面试

    - 调优工具:学习使用VisualVM、JConsole等JVM监控工具进行性能分析。 8. **其他**: - IO流:掌握字节流、字符流、缓冲流、转换流、对象流等。 - 泛型方法与类型擦除:理解泛型方法的声明和使用,了解类型擦除...

    最全 java23种设计模式 Debug模式+内存分析

    - **备忘录模式(Memento)**:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 - **解释器模式(Interpreter)**:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个...

    architect-awesome-java:《后端架构师技术图谱》java实现

    1. **Java基础**: - **语法**:包括基本数据类型、运算符、流程控制(if-else、switch、循环)、异常处理等。 - **面向对象**:类、对象、封装、继承、多态,以及接口和抽象类的概念。 - **集合框架**:List...

Global site tag (gtag.js) - Google Analytics