最近在拜读周志明的《深入理解Java虚拟机》,看了Java的内存管理机制以及Jvm优化相关内容。于是,下载了sun提供的Jvm检测工具VisualVm。
VisualVm下载地址:https://visualvm.java.net/
安装就很简单了,在此略过。
作者博客地址:http://icyfenix.iteye.com/
可以下载PDF版的《Java虚拟机规范 (Java SE 7 中文版)》
一、启动程序
1. 查看系统中运行的Java进程
左侧显示当前系统中运行的虚拟机进程,双击连接后可以监测虚拟机的运行状况。
2. 安装VisualGC插件
工具栏中“工具”→“插件”
由于我已经安装过了,如果没有安装,目录中会有VisualGC。该工具可以查看不同内存区域的使用情况和GC情况,效果如图
二、问题描述
使用jps命令,可以查看系统中运行的jvm进程
$ jps
2064 TestMain
1389 Main
2267 Jps
1009
287
忽然发现个奇特的东西,就是TestMain进程,这个名字好奇怪,不是我创建的,在“活动监视器”中搜了一下PID,发现是公司的Hosts管理工具。奇怪的是,一款小小的Hosts管理工具竟然使用了将近1.5G的内存,吓死宝宝了。
于是反应给工具维护人员,很快进行了优化,释放了无用内存。但是总的内存占用量仍然有700+M,在切换几次环境之后,会稳定到这个值。因为我在公共配置里添加了Google的Hosts内容,所有触发了这个问题。
这个内存占用量,是特别的高,显然不是开发人员设定的值,而是OS X Java Plugin的默认设置。这种工具,内存占用应该只是在100M以下,最后能做20-30M最好。
三、使用VisualVM监视工具内存使用情况
十分钟的内存使用情况: