5个你不知道的Java性能监控小技巧

5个你不知道的Java性能监控小技巧

ID:41144361

大小:40.50 KB

页数:4页

时间:2019-08-17

5个你不知道的Java性能监控小技巧_第1页
5个你不知道的Java性能监控小技巧_第2页
5个你不知道的Java性能监控小技巧_第3页
5个你不知道的Java性能监控小技巧_第4页
资源描述:

《5个你不知道的Java性能监控小技巧》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、很多开发者觉得自己懂Java编程,事实是大多数开发人员都只领会到了Java平台的皮毛,所学也只够应付工作。作者将深度挖掘Java平台的核心功能,揭示一些鲜为人知的事实,帮助您解决最棘手的编程困难。当应用程序性能受到损害时,大多数开发人员都惊慌失措,这在情理之中。跟踪Java应用程序瓶颈来源一直以来都是很麻烦的,因为Java虚拟机有黑盒效应,而且Java平台分析工具一贯就有缺陷。然而,随着Java5中JConsole的引入,一切都发生了改变。JConsole是一个内置Java性能分析器,可以从命令行或在GUI

2、shell中运行。它不是完美的,但是当尖头老板来问你关于性能的问题时,用它来应对还是绰绰有余的——这比查询PapaGoogle要好得多。我们将向您展示5个方法,使您可以轻松地使用JConsole(或者,它更高端的“近亲”VisualVM)来监控Java应用程序性能和跟踪Java中的代码。1.JDK附带分析器许多开发人员没有意识到从Java5开始JDK中包含了一个分析器。JConsole(或者Java平台最新版本,VisualVM)是一个内置分析器,它同Java编译器一样容易启动。如果是从命令行启动,使JDK

3、在PATH上,运行jconsole即可。如果从GUIshell启动,找到JDK安装路径,打开bin文件夹,双击jconsole。当分析工具弹出时(取决于正在运行的Java版本以及正在运行的Java程序数量),可能会出现一个对话框,要求输入一个进程的URL来连接,也可能列出许多不同的本地Java进程(有时包含JConsole进程本身)来连接。使用JConsole进行工作在Java5中,Java进程并不是被设置为默认分析的,而是通过一个命令行参数—-Dcom.sun.management.jmxremote——

4、在启动时告诉Java5VM打开连接,以便分析器可以找到它们;当进程被JConsole捡起时,您只能双击它开始分析。分析器有自己的开销,因此最好的办法就是花点时间来弄清是什么开销。发现JConsole开销最简单的办法是,首先独自运行一个应用程序,然后在分析器下运行,并测量差异。(应用程序不能太大或者太小;我最喜欢使用JDK附带的SwingSet2样本。)因此,我使用-verbose:gc尝试运行SwingSet2来查看垃圾收集清理,然后运行同一个应用程序并将JConsole分析器连接到它。当JConsole连

5、接好了之后,一个稳定的GC清理流出现,否则不会出现。这就是分析器的性能开销。JConsole或VisualVM?JConsole从Java5开始就随着Java平台版本一起发布,而VisualVM是在NetBeans基础上升级的一个分析器,在Java6的更新版12中第一次发布。多数还没有更新到Java6,因此这篇文章主要介绍JConsole。然而,多数技巧和这两个分析器都有关。 2.远程连接进程因为Web应用程序分析工具假设通过一个套接字进行连通性分析,您只需要进行少许配置来设置JConsole(或者是基于J

6、VMTI的分析器,就这点而言),监控/分析远程运行的应用程序。如果Tomcat运行在一个名为“webserve”的机器上,且JVM已经启动了JMX并监听端口9004,从JConsole(或者任何JMX客户端)连接它需要一个JMXURL“service:jmx:rmi:///jndi/rmi://webserver:9004/jmxrmi”。基本上,要分析一个运行在远程数据中心的应用程序服务器,您所需要的仅仅是一个JMXURL。3.跟踪统计JConsole有许多对收集统计数据有用的选项卡,包括:◆Memory

7、:在JVM垃圾收集器中针对各个堆跟踪活动。◆Threads:在目标JVM中检查当前线程活动。◆Classes:观察VM已加载类的总数。这些选项卡(和相关的图表)都是由每个Java5及更高版本VM在JMX服务器上注册的JMX对象提供的,是内置到JVM的。一个给定JVM中可用bean的完整清单在MBeans选项卡上列出,包括一些元数据和一个有限的用户界面来查看数据或执行操作。(然而,注册通知是在JConsole用户界面之外。)使用统计数据假设一个Tomcat进程死于OutOfMemoryError。如果您想要弄

8、清楚发生了什么,打开JConsole,单击Classes选项卡,过一段时间查看一次类计数。如果数量稳定上升,您可以假设应用程序服务器或者您的代码某个地方有一个ClassLoader漏洞,不久之后将耗尽PermGen空间。如果需要更进一步的确认问题,请看Memory选项卡。不要成为典型发现应用程序代码中性能问题的常用响应多种多样,但也是可预测的。早期的Java编程人员对旧的IDE可能十分生气,并开始进行代码库中主要

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。