当前位置: 首页 > 编程笔记 >

java开发中如何使用JVisualVM进行性能分析

段干兴业
2023-03-14
本文向大家介绍java开发中如何使用JVisualVM进行性能分析,包括了java开发中如何使用JVisualVM进行性能分析的使用技巧和注意事项,需要的朋友参考一下

JVisualVM是由Sun提供的性能分析工具,如此强大的后盾怎能不强大?在Jdk6.0以后的版本中是自带的,配置好环境变量然后在运行中输入“JVisualVm”或直接到Jdk的安装目录的Bin目录下找到运行程序即可运行。如果是用Jdk1.5或以前版本的朋友就得要单独安装了。

我觉得其还有一个强大的地方就是不需要用代理启动(即如果要监视某个程序则需要用测试软件来运行程序方便其监视如YourKit这款同类的测试工具)的方式来运行,十分方便,只要是用Jdk环境运行的,打开此测试工具后即能看到并监视程度的运行状态,当然前提是要运行在同一个Jdk的环境中。


地址:https://visualvm.dev.java.net/

连接

1、本地机器的程序直接可以监听到

2、远程机器的程序需要加上JVM参数


-Dcom.sun.management.jmxremote= true


-Dcom.sun.management.jmxremote.port= 9090


-Dcom.sun.management.jmxremote.ssl= false


-Dcom.sun.management.jmxremote.authenticate= false

备注:另外需要检查


hostname –i

解析出来是否为本地的IP,如是127.0.0.1或者IP为多个IP中之一,则其他的IP无效,会连接不上。

这里有个分析案例,利用jvisualvm分析tomcat的问题:

http://blog.tty.nl/2010/09/03/using-visualvm-to-fix-live-tomcat-and-jvm-problems

插件安装

tools->plugin->Available Plugin 会有值得安装的插件,如:VisualGC JConsole

 

插件列表:https://visualvm.dev.java.net/plugins.html

注意:上面提供的端口配置有些麻烦,不如直接这样做:

要使用 VisualGC 必须在远程机上启动jstatd代理程序,否则会显示 “not supported for this jvm” 错误
而启动 jstatd 时会有一个权限问题,需要做如下修改:
nano /opt/sun-jdk- 1.6 . 0.26 /jre/lib/security/java.policy


nano /opt/sun-jdk-1.6.0.26/jre/lib/security/java.policy

增加下列行


grant codebase "file:${java.home}/../lib/tools.jar" {

 permission java.security.AllPermission;

};

然后启动 jstatd并且不要关闭

如:


Threads


查看线程的运行情况,运行、停止、睡眠、等待,根据这些结合实际程序运行的逻辑分析。

找到可疑份子,可以Thread Dump  找出具体是哪个线程在作祟。

参看这个例子:http://blog.tty.nl/2010/09/03/using-visualvm-to-fix-live-tomcat-and-jvm-problems

profile

关于如何使用,如何分析程序,可以参看这个例子:http://www.baptiste-wicht.com/2010/07/profile-applications-java-visualvm

 类似资料:
  • 问题内容: 我是JavaPOS的新手。我想创建一个使用JavaPOS的在线Java POS应用程序。无论品牌如何,都可以访问POS外围设备?爱普生ADK是否有可能也可以访问其他品牌?更重要的是,可以通过网络访问吗? 如何在Eclipse中的JavaPOS中开始编码?我找到了一篇有关部署的文章(JavaPOS部署),但是没有提及开发。我也找到了一些示例,但是我不知道如何在Eclipse中进行设置?我

  • 本文向大家介绍如何使用Kotlin进行Android开发,包括了如何使用Kotlin进行Android开发的使用技巧和注意事项,需要的朋友参考一下 Kotlin是一门基于JVM的编程语言,它正成长为Android开发中用于替代Java语言的继承者。Java是世界上使用最多的编程语言之一,当其他编程语言为更加便于开发者使用而不断进化时,Java并没有像预期那样及时跟进。    Kotlin是由Jet

  • 问题内容: VisualVM有两个单独的选项卡,用于采样和分析。在VisualVM中采样和配置文件有什么区别? 问题答案: 意味着要进行大量的线程转储并分析堆栈跟踪。这通常更快,不需要字节码中的运行时更改(这可能会破坏它),但准确性也较低。 表示检测您的类和方法,以便它们在运行时“报告”。这是更准确的,因为它不仅计数完成转储时捕获的那些方法,而且还计算每次检测的方法调用。但是,检测意味着更改了您的

  • 问题内容: 我有一个Spring应用程序,我认为它存在一些瓶颈,因此我想用一个探查器运行它来衡量哪些功能需要花费多少时间。有什么建议我应该怎么做? 我正在运行STS,该项目是一个maven项目,并且正在运行Spring 3.0.1 问题答案: 我已经使用Spring AOP做到了。 有时,我需要有关在项目中执行某些方法(例如,控制器的方法)花费多少时间的信息。 在servlet xml中,我把 另

  • 本文向大家介绍使用Python和PyQT进行Java GUI开发,包括了使用Python和PyQT进行Java GUI开发的使用技巧和注意事项,需要的朋友参考一下 编程是为计算机科学专业学生培养不同技能的基础。当同龄人发现自己对编程技巧充满信心时,他们想进一步努力。他们可能会选择不同的选项,例如Web开发,GUI编程,游戏开发,数据科学,人工智能,人机交互等。GUI开发被视为这些热门话题中的最热门

  • 问题内容: 我正在使用Node.js进行一些Web抓取。我想使用XPath,因为我可以使用几种GUI半自动生成它。问题是我找不到有效的方法。 非常慢。它会在一分钟左右的时间内解析500KiB文件,并具有完整的CPU负载和大量内存。 流行的HTML解析库(例如)既不支持XPath,也不公开W3C兼容的DOM。 很明显,有效的HTML解析是在WebKit中实现的,因此可以使用或将其作为一种选择,但这些