0. 前言
上一篇文章已经介绍过Hotspot 虚拟机的架构是如何发现垃圾,回收垃圾的,也着重介绍了分代回收的过程:
Java GC 基础二——内存管理及回收算法。本文主要想阐述的问题如下:
- 何如利用工具来进行Java程序内存分析?
1. 何如利用工具来监控Java垃圾收集
1.1 VisualVM介绍
VisualVM 是一款免费的\集成了多个JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作。
在内存分析上,Java VisualVM的最大好处是可通过安装Visual GC插件来分析GC(Gabage Collection)趋势、内存消耗详细状况。
1.2 VisualVM安装
jdk1.7自带jvisualvm可以对java应用进行监控。其中有个插件visualgc可以查看jvm垃圾回收的具体信息。安装插件的步骤是打开jvisualvm,点击工具->插件,在可用插件列表找到Visual GC进行安装,结果提示无法安装。在浏览器打开链接访问一下,发现java.net网站已经被Oracle关闭了。原来isualvm已经迁移到了github上,地址是https://visualvm.github.io/index.html。
下载安装完毕后,我们打开程序,点击菜单栏 工具->插件->可用插件,安装Visual GC。
安装完成后,会发现多了一个Visual GC选项,如下所示:
1.3 VisualVM使用
我使用的和序示例是Java2Demo.jar,Java2Demo.jar是一个jar文件,在JDK里有包含,如果没有也可以去网上下载一个,接下来我们用命令行来运行这个jar文件。
在控制台中输入:
java -Xmx12m -Xms3m -Xmn1m -XX:PermSize=20m -XX:MaxPermSize=20m-XX:+UseSerialGC -jar C:\Users\IBM_ADMIN\Desktop\Java2demo.jar
命令行中的参数含义如下:
被监控的程序运行一段时间后Visual GC显示如下,各个分区的随时间的变化情况可以从图中很清晰的看出来。