首先,感谢 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这么简单明了,或者是我不会用吧。继续学习。
相关推荐
本文将深入探讨VisualGC的使用及其在JDK1.8中的应用。 首先,VisualGC是针对JDK内置的Jvisualvm工具的一个扩展插件,它提供了实时的内存分配和垃圾回收的可视化界面。Jvisualvm是一款功能强大的多合一Java应用程序...
本文将详细介绍VisualGC的安装与使用,以及它如何帮助我们优化Java应用程序的性能。 首先,让我们了解一下什么是jvisualvm。jvisualvm是Java Development Kit(JDK)自带的一款多合一的性能分析工具,集成了诸如...
首先,我们需要下载VisualGC的插件文件,这个文件通常以.nbm为扩展名,例如"com-sun-tools-visualvm-modules-visualgc.nbm"。这个文件包含了VisualGC的所有组件和资源,是我们安装所需的关键。 离线安装步骤如下: ...
VisualGC插件是VisualVM的一款核心插件,主要功能是可视化地展示Java应用的垃圾回收(Garbage Collection)过程,帮助开发者理解内存分配和回收的细节,优化程序性能。该插件的nbm文件格式是NetBeans Module的缩写,...
2. **实时监控**:在应用运行过程中,VisualGC会实时显示当前的内存使用情况,包括新生代、老年代、持久代等各个区域的大小和利用率。 3. **GC事件通知**:当发生GC时,VisualGC会进行提示,帮助开发者了解GC发生的...
VisualGC是Oracle JDK自带的VisualVM工具的一个插件,主要针对JVM的垃圾收集和内存使用情况进行可视化展示。通过这个插件,我们可以实时查看堆内存、年轻代、老年代以及永久代的使用情况,以及GC(Garbage Collector...
《深入理解JVisualVM与...总结来说,JVisualVM和VisualGC是Java开发者不可或缺的诊断工具,它们帮助我们更好地理解和优化应用的内存管理,提升系统性能。熟练掌握这两款工具,将使你在问题排查和性能优化上更上一层楼。
Visual GC插件的安装相当简单,用户只需将"com-sun-tools-visualvm-modules-visualgc.nbm"文件导入到JVisualVM中即可。这个.NBM文件是NetBeans模块系统使用的归档文件,包含了插件的所有必要组件。导入后,用户可以...
在JVisualVM中打开VisualGC插件,用户可以看到实时的内存使用图表,包括堆内存大小、各代内存使用量的变化,以及GC事件的发生情况。这些图表直观地展示了内存分配和回收的过程,使得开发者能快速理解JVM内存管理的...
访问VisualVM的官方插件中心网址(https://visualvm.github.io/pluginscenters.html),在"Available Plugins"中找到"Visual GC",点击下载最新的nbm文件,例如"com-sun-tools-visualvm-modules-visualgc_1.nbm"。...
使用JVisualVM插件时,应首先根据应用程序的需求选择合适的插件,如内存监控选择Visual GC,性能瓶颈定位选择Tracer。安装插件后,通过实时数据图表和日志,可以及时发现问题,然后利用提供的诊断工具进行深入分析...
VisualGC插件能够显示GC活动的详细信息,包括各代内存的变化、GC停顿时间、GC频率等,这对于理解和优化GC行为非常有帮助。 在实际调优过程中,我们通常会先使用默认配置运行应用,然后根据监控数据和日志信息找出...
VisualGC插件提供了图形化的垃圾收集视图,帮助开发者理解和分析Java应用的内存管理,识别内存泄漏和优化GC策略。 9. **安全性插件(com-sun-tools-visualvm-modules-security.nbm)** 这个插件增强了jVisualVM的...
- **VisualGC**:提供图形化的GC日志分析。 #### 七、预防内存不足和内存泄漏 为了预防这些问题的发生,可以采取以下措施: - **合理配置JVM参数**:根据应用程序的实际需求合理设置堆内存和其他内存区域的大小。...
在"dup002-com-sun-tools-visualvm-modules-visualgc.nbm"这个文件中,我们可以看到一个名为"VisualGC"的模块。这是jvisualvm的一个扩展,专门用于图形化展示垃圾收集器的工作情况。它提供了详细的GC日志分析,包括...
本文将以Sun的JDK 6 HotSpot 6u20版本为例,讲解在Windows XP SP3系统下使用Visual Studio 2003进行编译调试。尽管JVM可以在多个平台上运行,但在Windows环境下进行调试通常更为便捷。编译时选择-server模式,并设定...
- **查看VisualGC插件**:通过VisualGC插件可以直观地看到内存使用情况的变化。如果发现老生代的内存没有减少或者始终占用大量空间,这可能意味着存在内存泄漏。 - **进行堆转储**:在怀疑存在内存泄漏的情况下,...
Java开发过程中,对应用程序的性能优化至关重要,而JVisualVM作为一个强大的性能分析工具,可以帮助开发者深入洞察应用的运行状态。自JDK 6.0版本起,JVisualVM就已经作为默认组件集成在JDK中,无需额外安装。只需...