首先,感谢 IcyFenix 的 《深入理解Java虚拟机:JVM高级特性与最佳实践》,受书中对eclipse调优的影响,如法炮制,对我们的应用进行了一次尝试。
书中讲到的是通过sunjdk中自带的visualVM的visualgc插件,获取eclipse启动过程中内存使用情况。
但我们这边条件有限,甲方的电脑不允许上网,自己就把我本地装有插件的Jdk拷贝过去,发现拷贝过去的visualVM插件一个都没有。。。没找到原因。
在网上搜索visualgc的插件信息,得到的结果是:
Some third-party plugins need to be installed from a downloaded .nbm file:
Visual GC Plugin. Integration of the Visual GC tool into VisualVM.
visual gc插件跟visualvm是一伙的。。。visualvm插件下载
不死心,有继续google,终于找到我想要的了:
Visual Garbage Collection Monitoring Tool
在oracle的这个页面可以看到下载按钮download,东西不大,150KB。
#20140923更新内容>>
该工具oracle官网的介绍地址:http://www.oracle.com/technetwork/java/visualgc-136680.html
下载连接:http://www.oracle.com/technetwork/java/jvmstat-142257.html
添加附件:jvmstat-3_0.zip
#20140923更新内容<<
解压后目录结构如下图:
修改bat/visualgc.cmd批处理文件,添加环境变量信息:
set JVMSTAT_JAVA_HOME=D:\ProgramFiles\jdk1.6.0_26
1. 监控本地java进程:
直接执行命令:visualgc.cml <pid> #pid是本地java进程号,必输项
2. 监控远程java进程:
过程曲折,直接说我的使用过程。
2.1 开通远程系统java环境rmi权限:
在远程系统的如下目录:jdk1.6.0_26\jre\lib\security
修改java.policy文件,在文件倒数第二行如下,添加标红的内容:
permission java.util.PropertyPermission "java.vm.version", "read";
permission java.util.PropertyPermission "java.vm.vendor", "read";
permission java.util.PropertyPermission "java.vm.name", "read";
permission java.security.AllPermission;
};
2.2 启动远程系统rmi监听端口:
在远程系统上执行命令:
jstatd -J-Djava.security.policy=all.policy #默认端口1099
jstatd -J-Djava.security.policy=all.policy -p 9998 #指定端口9998
如果没有2.1的操作步骤,会出现下面的异常:
Could not create remote object
access denied (java.util.PropertyPermission java.rmi.server.ignoreSubClasses write)
java.security.AccessControlException: access denied (java.util.PropertyPermission java.rmi.server.ignoreSubClasses write)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
at java.security.AccessController.checkPermission(AccessController.java:546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.System.setProperty(System.java:725)
at sun.tools.jstatd.Jstatd.main(Jstatd.java:122)
2.3 在本地系统开启visualgc监控客户端:
执行命令:visualgc.cmd <pid>@ip:port
就可以打开visualgc的可视化界面。
2.4 对压力测试环境的应用进行监控,发现内存分配有些不合理,经过调整,系统的TPS从300+,一直稳定在380,经过visualgc的分析,能够直观的看到内存的情况,效果还是有所提升的。
2.5 存在的另一个问题,压力测试环境使用的sun的jdk,但是其他的开发环境,uat测试环境,生产环境都使用的jrockit的jdk。这个工具不能对jrockit进行监控,尝试了一下,启动本地系统客户端的时候出现空指针错误,无法启动。使用jrmc,发现对内存这块没有visualgc这么简单明了,或者是我不会用吧。继续学习。
相关推荐
Visual GC插件(org-graalvm-visualvm-modules-visualgc.nbm)
jdk8各个小版本VisualGC插件,包括版本JDK 8 - Update 11、JDK 8 Update 20 - 25、JDK 8 Update 40 - 121及JDK 8 Update 131 - 261
java 虚拟机jvm内存管理软件visualVM的插件visualGC,适合jdk1.7和jdk1.8。使用方法:打开visualVM,工具->插件->已下载->添加插件,定位到本地下载的visualGC位置,然后打开。重启visualVM即可。
Java虚拟机Visual GC插件
Visual GC 离线安装包,下载即可安装使用,方便快捷。Spaces: 各个分代的内存使用情况。 特别说明:表格有分灰色部分,表示未分配的内存。显明部分,表示已分配的内存。当 -xmx 不等于 -xms 时,vm是动态根据实际...
Visual GC_v2.1.2(com-sun-tools-visualvm-modules-visualgc.nbm),是辅助JDK自带jvisualvm工具的一个内存使用分析与GC收集的可视化插件,此版本已验证,支持JDK8。
Visual GC 离线安装包,下载即可安装使用,方便快捷。Spaces: 各个分代的内存使用情况。 特别说明:表格有分灰色部分,表示未分配的内存。显明部分,表示已分配的内存。当 -xmx 不等于 -xms 时,vm是动态根据实际...
jvisualvm GC 插件com-sun-tools-visualvm-modules-visualgc.zip
jvisualvm的VisualGC插件,下载完成后进行解压,然后打开jvisualvm后打开工具->插件->已下载->添加插件,然后选中下载的nbm安装包进行安装,安装成功后重启即可。
当安装JDK后,运行visualVM监控JVM资源时,发现没有visualgc模块出来,此时可以在工具-插件-已下载下,添加此插件,并进行安装。再次重启visualVM就会出来visualgc模块了
visualvm visual gc插件
VisualGC插件,用于监控JVM内存情况
这是一个草鸡好用的堆内存GC情况可视化插件工具,如何使用,怎么查看可以看看我的JVM相关博文。
可以在JDK1.8自带的jvisualvm监控工具上安装此插件,亲测可用
VisualVM 是一款免费的\集成了多个JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。
visualVM安装插件,无法连接到visualVM 插件中心,可通过手动安装。 对应jdk1.8.0_161,com-sun-tools-visualvm-modules-visualgc.nbm