一、概述
上一个专题专门举例说明了使用VisualVM进行远程监控以及对Tomcat的远程监控,如果有兴趣,可以查看:
http://josh-persistence.iteye.com/blog/2233459
该专题将讲解如何使用VisualVM生成快照、以及如何对JVM的GC进行监控,最后举例说明如何将VisualVM和eclipse进行集成。
二、快照功能
我们可以使用 VisualVM 的快照功能生成任意个性能分析快照并保存到本地来辅助我们进行性能分析。快照为捕获应用程序性能分析数据提供了一个很便捷的方式因为快照一旦生成可以在任何时候离线打开和查看,也可以相互传阅。VisualVM 提供了两种类型的快照:Profiler快照和应用程序快照。
- Profiler 快照:当有一个性能分析会话(内存或者 CPU)正在进行时,我们可以通过性能分析结果工具栏的“快照”按钮生成 Profiler 快照捕获当时的性能分析数据。
点击“快照”按钮后,生成Profiler快照,也可以选择存储该快照在本地:
- 应用程序快照:我们可以右键点击左侧 Applications 窗口中应用程序节点,选择“应用程序快照”为生成一个应用程序快照。应用程序快照会收集某一时刻的堆转储,线程转储和 Profiler 快照,同时也会捕获 JVM 的一些基本信息。
保存快照后便可以按照脱机的离线分析应用程序了。
三、监控JVM GC
如果需要使用VisualVM监控GC,首先我们需要安装visual GC 插件,在上面的启动界面中点击工具->插件->可用插件->Visual GC
安装结束后,就可以开始监控GC了,运行前面第一讲中说到的HeapMemoryTest.java,可以得到如下的截图:
上图的左边显示了Old,Eden,S0,S1使用的内存空间。右面的图表显示了各个部分申请和释放内存的详细信息。它以设定的刷新频率不停地跟新。
上图显示的是一个正常运行的程序。当发生内存泄露或者不正常的操作时,可以从图形本身明显地看出来,至少我们可以知道程序中存在和对象内存分配 和垃圾回收相关的问题。然后利用其他标签如“Threads”中提供的信息和Thread Dump我们可以缩小发生问题的范围。如下图:
在“监视”标签中,我们可以看到以时间线发展的内存使用概况图。这里有个“执行垃圾回收”按钮可以调用垃圾回收过程。
四、与Eclipse集成
其实我并不介意将eclipse和virsualvm集成起来,这不仅会加重eclipse的负担,在eclipse中的virsualvm标签和eclipse的程序代码标签之间切换来切换去会比较麻烦,还不如像前面所提到的一样,直接在控制台中启动visualvm,这样当eclipse中的程序启动的时候,就会默认被visualvm所监控到,这样不仅减轻了eclipse的负担,在问题发生时,也可以很好的对照eclipse中的代码和visualvm中的状态。
但是如果你确实很想在eclipse中添加visualvm的插件,首先可以从这里下载最新的eclipse launcher for visual vm: https://visualvm.java.net/eclipse-launcher.html,然后参照如下的两篇博客:
http://developer.51cto.com/art/200906/130424_all.htm
http://www.blogjava.net/Nirvana/archive/2012/09/13/387618.html
相关推荐
### JVM工具、参数调优与调试技巧 #### 一、JVM工具 ##### 1. jps:虚拟机进程状况工具 - **简介**:`jps` 是一个用于显示当前运行的所有Java虚拟机进程(JVMs)的简单工具。它会列出每个JVM的PID(进程ID)以及...
7. **VisualVM**:这是一个集成的故障处理工具,包含多种功能,如性能监视、内存分析、线程分析等,是开发者常用的JVM工具。 8. **jconsole**:它提供图形界面来监控Java应用程序,包括CPU使用率、内存使用、线程...
通过合理配置JVM参数、利用性能监控工具以及理解类加载、垃圾回收等机制,可以有效提升程序的运行效率和稳定性。同时,掌握锁机制和类文件结构等高级话题也能帮助开发者更好地处理复杂的应用场景。
分析heapdump文件,我们可以使用各种工具,如Eclipse Memory Analyzer Tool (MAT)、VisualVM等。MAT是一款强大的内存分析工具,它可以显示内存概览、查找内存泄漏、分析对象生命周期等。在MAT中,你可以通过"Leak ...
- **Eclipse Memory Analyzer (MAT)**: 用于分析JVM堆快照,帮助定位内存泄露的原因。 - **VisualVM**: 提供了丰富的内存监控功能,包括CPU使用率、内存使用情况等。 3. **代码审查**: - 对项目代码进行全面审查...
1. **内存快照分析**:使用工具(如VisualVM、MAT等)获取JVM的内存快照,分析对象的分布、大小、引用关系,找出内存泄漏的线索。 2. **GC日志分析**:检查垃圾收集器的日志,分析垃圾回收频率、耗时以及每次回收...
Java内存分析工具是Java开发过程中不可或缺的利器,主要用于检测和解决程序中的内存泄漏问题,以及进行性能监控。本文将深入探讨几种常用的Java内存分析工具,它们的特点、使用方法以及如何利用这些工具有效地优化...
- **VisualVM**:Oracle提供的多合一JVM诊断工具,包含堆分析功能。 - **MAT (Memory Analyzer Tool)**:Eclipse项目下的内存分析工具,功能强大且易用。 总结,HeapAnalyzer作为一款专业的Java堆内存分析工具,...
- **监控工具**:如VisualVM、JProfiler、MAT(Eclipse Memory Analyzer Tool)等可以帮助我们分析内存使用情况,查找内存泄露的线索。 - **日志分析**:通过JVM的GC日志,观察对象分配和回收的情况,寻找异常模式...
- **Java诊断工具**: Eclipse Memory Analyzer (MAT) 和 VisualVM 等工具可以帮助开发者诊断内存泄漏等问题。 ##### 1.2 Java基础知识 - **阅读源代码**: 了解Java核心库的实现细节对于深入理解Java语言至关重要。...
VisualVM和GCViewer是强大的JVM监控工具,能够显示实时的内存使用情况、垃圾收集日志和性能指标,帮助诊断内存问题。 8. **内存溢出类型** - **堆内存溢出**:当堆不足以分配新对象时发生。 - **非堆内存溢出**...
- 定期进行性能监控和内存分析,及早发现并修复问题。 总之,MemoryAnalyzer是Java开发者诊断内存泄露问题的强大工具,配合对Tomcat和JVM的深入理解,可以有效地定位和解决内存泄露问题,提升Java应用的性能和稳定...
第4章 虚拟机性能监控与故障处理工具 4.1 概述 4.2 JDK的命令行工具 4.2.1 jps:虚拟机进程状况工具 4.2.2 jstat:虚拟机统计信息监视工具 4.2.3 jinfo:Java配置信息工具 4.2.4 jmap:Java内存映像工具 ...
你可以通过JVM的命令行参数(如"-XX:+HeapDumpOnOutOfMemoryError")或者通过Java VisualVM等工具来生成heap dump。 MAT提供了多种视图来帮助分析内存状况,包括"Overview"、"Leak Suspects"、"Dominator Tree"、...
- **VisualVM**:这是一个免费的可视化工具,可以监控JVM的性能指标,包括内存使用情况,并提供内存快照功能帮助定位内存泄漏。 - **Eclipse Memory Analyzer Tool (MAT)**:专门用于分析Java堆内存快照,帮助开发者...
- 使用jmap命令生成内存快照,然后使用Eclipse MAT等工具分析内存占用情况,找出问题。 除了上述解决方案,还有一些通用的优化措施: - 监控和分析应用的内存使用,了解内存增长趋势。 - 使用内存分析工具,如...
为了诊断和解决内存泄漏问题,开发人员可以使用专门的内存分析工具,如Eclipse Memory Analyzer(MAT)或VisualVM等。这些工具可以帮助定位内存泄漏的根源,提供详细的内存快照和分析报告,帮助开发者识别长期存活的...
此外,还有一些第三方库如`Eclipse Memory Analyzer Tool (MAT)`和`Java VisualVM`,它们提供了分析内存快照和对象大小的功能。 了解对象大小对于优化内存使用非常重要。过大的对象可能导致频繁的GC活动,影响性能...