课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
java语言作为市场上使用时间和使用范围都比较方便的编程语言而被广大用户使用,那么我们在进行java编程中有哪些便捷功能可以使用呢?达内java培训课程又有哪些内容是涉及便捷功能使用的呢?
今天,我们主要就java编程的监控器方面来进行分析,希望大家学习之后能够有所收获。
Java任务控制概览
Java任务控制是一个图形化的界面,它借助 JMX控制台 (提供了服务器的原始视图)和 Java飞行记录器(Java Flight Recorder) (收集、分析和诊断应用的数据)的帮助,能够可视化Java虚拟机(Java VM)的行为。
JMC(jmc命令)打包在了Java开发工具集中(JDK),位于bin目录下。额外的日志可以通过使用 –consoleLog –debug 选项来启用。各种体验式的插件(比如针对DTrace、JMX控制台的插件)也可以进行在JMC中进行下载。
Java飞行记录器概览
Java飞行记录器会收集Java应用程序以及Java VM的行为信息。JFR构建在了Java VM之中,能够为用户提供运行时的信息。使用JFR并不会影响其他的Java VM优化,它的最小开销会小于2%。
JFR有不同的事件,比如即时事件(instant event)、持续事件(duration event)以及可请求事件(request-able event)。即时事件只会在某个时间点发生(比如线程启动),因此它的开销最小,但是持续事件(如垃圾收集等)是基于阈值的,与之类似,可请求事件(比如方法分析采样)基于可配置的时间段,因此这些事件的开销差异很大。
JFR的采样性能分析器并不需要线程处于安全点上,也不会记录每个方法的调用(它只会探测热点方法)。按照该演讲所述,对于调用原生方法的线程,并没有与之相关的采样。
有两种不同类型的记录:固定时间(性能分析)的记录以及持续的记录,它们都会dump到一个文件中。
创建记录
要使用JFR来创建记录,我们需要在启动JVM的时候添加如下的命令行选项: -XX:+UnlockCommercialFeatures -XX:+FlightRecorder
从Java 8 update 40开始,我们还可以在运行时通过JMC或者 jcmd 方案来创建JFR记录。
分析记录
在演讲中,Westin强调在进行任何的深入调查之前,提出正确问题是非常重要的。接下来他给出了一个样例,这个样例阐述了“热点方法”的问题,如下所示:
在这里,当“Hot Methods” tab选中的时候,我们可以看到LinkedList.indexOf(Object)占据了总采样数量的97.35%。在深入研究调用栈的时候,我们发现在链式列表中有一个contains(Object)方法,这个方法需要O(n)的迭代。为了解决这个问题,Westin运行了另外一个JFR记录,将LinkedList替换为HashSet,它的结果如下所示:
随后,Westin又介绍了两个样例:其中一个是关于线程竞争的,另一个是因为自动装箱所导致的内存分配。最后,他进行了总结展望,
达内时代科技集团致力于培养面向电信和金融领域的Java、C++、C#/.Net、3G/Android、3G/IOS、PHP、嵌入式、软件测试、UID、网络营销、网络工程、会计、UED、web、Unity3D、大数据、童程童美等17大方向中高端软件人才课程与少儿教育课程。选择运城计算机培训,不再孤军奋战,轻轻松松做IT高薪白领。运城达内培训带领有明确目标的学子迈向成功之路!想找工作的求职者可以加QQ:3373924515(太原达内就业服务部)咨询了解。