gui jfr_Java飞行记录器(JFR)

gui jfr

JFR是一个Java分析器,它使您可以研究代码的运行时特征。 通常,您将使用探查器来确定代码的哪些部分导致大量内存分配或导致消耗过多的CPU。

有很多产品在那里。 过去,我使用过YourKit,OptimizeIt,JProfiler,NetBeans等。 每个都有其优点,并且在很大程度上取决于您所选择的个人偏好。 我当前个人最喜欢的是YourKit。 它可以很好地集成到IntelliJ中,具有相对较低的开销,并且可以很好地呈现其报告。

事实是,概要分析是一门非常不精确的科学,通常不只需要研究一个探查器来更清晰地了解程序中到底发生了什么。 据我所知,大多数探查器都依赖JVMP / JVMTI代理来探查Java程序。 一个主要的问题是安全点 。 这意味着您的Java程序只有在安全点才能被探测。 这意味着您将错误地了解程序中实际发生的情况,尤其是当许多活动处于安全点之间时。 同样,所有探查器都会在不同程度上增加开销。 Profiler的开销将改变程序的特性,并可能导致分析结果产生误导。 这里有更多信息。

输入JFR。 自7u40版以来,JRF已与JDK捆绑在一起。 通过直接访问JVM构建JFR。 这不仅意味着开销很低(几乎在所有情况下都声称少于1%),而且也不依赖安全点。 在这里查看一个示例,该示例与YourKit和JFR的分析有多么根本的不同。

要运行JFR,您需要将以下开关添加到Java命令行中:

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder

JFR位于Java Mission Control(JMC)中。 要启动JMC,只需在命令行中键入jmc ,如果您的路径中包含JDK,则JMC控制台将启动。 您应该在左侧窗格中看到Java程序。 右键单击您的程序,然后开始飞行记录。

屏幕截图2015年1月16日于08.21.43

您将看到一个对话框,您可以在其中接受默认值(一分钟采样),然后将显示结果。 值得付出选择,以找到最适合您的方式。 与所有好的产品一样,该GUI非常直观。

从命令行开关可以看出,这是商业功能。 我不确定这意味着什么,但是您可以在这里的文档中了解更多信息。 您也可以从命令行运行它,所有这些都在文档中。

我确实发现的一个问题是,当我下载最新的Java8快照(此时为1.8.0_40-ea)时,我无法启动程序并收到以下消息:

/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/bin/
Error: Trying to use 'UnlockCommercialFeatures', but commercial features are not available in this VM.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

总而言之,JFR是对任何开发人员工具箱的重要补充,只要您使用的是JDK版本7u40或更高版本,那么肯定值得在您的代码中进行尝试。

(我鼓励您查看上一篇文章结合JFR 进行性能优化的第一条规则 )

翻译自: https://www.javacodegeeks.com/2015/01/java-flight-recorder-jfr.html

gui jfr

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338887.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 命名内部类_如何把java SWT程序中的匿名内部类改写成命名内部类?

展开全部//请看最后一个e69da5e6ba9062616964757a686964616f31333363386134private class ,其实命名内部类跟普通的java程序一样写,只要知道你自己的监听器要继承于哪个类,实现什么方法public class Level4Class extends ViewPart {private TableViewer …

C语言 | 递增运算符

如何灵活使用C语言递增运算符。 解题思路:自增运算符 使操作数的值加1,其操作数必须为可变左值(可简单地理解为变量)。对于自增就是加1这一点,读者应该不会有什么疑问。难点在于: 可以置于操作数前面&#…

数据结构实验之图论四:迷宫探索_迷宫搜索类的双向bfs问题(例题详解)

前言文章若有疏忽还请指正!更多精彩还请关注公众号:bigsai头条号:一直码农一直爽在搜索问题中,以迷宫问题最具有代表性,无论是八皇后的回溯问题,还是dfs找出口,bfs找最短次数等等题目的问题。在…

ejb运行程序_在哪里可以运行EJB?

ejb运行程序EJB不仅为Java EE应用服务器而建。 他们还可以执行在的Java EE Web Profile的容器或简单的Java SE环境(Java SE的啊- !E!ASY 的J ava 乙是指合同)。 EJB Lite 仅支持完整的EJB规范提供的功能的子集所必需的-相同功能的…

css vue 选项卡_vuejs实现标签选项卡动态更改css样式的方法

html{{item.name}}jsvar app new Vue({el:"#app",router,data:{m:"hello vue.js",active:2,idx:0, //默认选择首页headerList:[{name:首页1},{name:首页2},{name:首页3},{name:首页4},{name:首页5},{name:首页6}]},methods:{// 1.选择selectMainTheme:fun…

ngrok服务器搭建_利用暴露在外的API,无法检测的Linux恶意软件将矛头指向Docker服务器...

K8s已经成为一线大厂分布式平台的标配技术。你是不是还在惆怅怎么掌握它?来这里,大型互联网公司一线工程师亲授,不来虚的,直接上手实战,3天时间带你搭建K8s平台,快速学会K8s,点击下方图片可了解…

干货 | C语言系列3——常量,运算符,常用数学函数......

符号常量和const常量1.符号常量符号常量通俗来讲就是“替换”,又称为宏定义。格式如下:#define 标识符 常量宏定义可以定义单个变量为常量,也可以定义某个语句或片段。宏定义有一点需要特别注意,它只是“机械”替换,并…

javafx 浏览器_浏览器中的JavaFX

javafx 浏览器浏览器中的JavaFX屏幕截图 最近,Carl Dea和我启动了一个新项目,将JavaFX 8引入浏览器。 今天,我想介绍我们创建的前两个概念验证,以查看该想法是否完全可行。 对于不耐烦的人,这里是到PoC的链接。 但请注…

django写mysql轮询_django 多数据库及分库实现方式

定义及路由机制定义在settings里面的DATABASES是一个字典,用于定义需要的数据库,如下,一共定义了两个数据库。DATABASES {default: {NAME: app_data,ENGINE: django.db.backends.postgresql_psycopg2,USER: postgres_user,PASSWORD: s3krit}…

python换行不执行_PYTHON无法换行问题,求指点

PYTHON无法换行问题,百思不得其解。fp.write(u{a}\n.format(a\n.join(a)))改成fp.write(u{a}\n.format(a,.join(a)))“,”可以正常显示下附源码,请指点一二#!/usr/bin/env python# encodingutf-8from bs4 import BeautifulSoupimp…

javafx 示例_JavaFX列表示例

javafx 示例这是使用JavaFX构建的示例列表应用程序。 该应用程序是待办事项列表。 该应用程序具有添加,更新和删除列表中项目的功能。 列表数据存储在HSQLDB关系数据库中。 该应用程序使用JDBC(Java数据库连接)API访问数据库。 该应用程序打包…

嵌入式C语言的7个硬核知识

1void 与 void*void表示的是无类型,不可以采用这个类型声明变量或常量,但是可以把指针定义为void类型,如void* ptr。void指针可以指向任意类型的数据,可用任意数据类型的指针对void指针赋值,比如int *ptrInt&#xff1…

python离线安装第三方库whl_详细说明如何在pycharm不联网的情况下,离线安装第三方库及依赖包(如sklearn)...

1、安装目标库1、首先,选择你要导入的库文件,如seaborn库下载网站:https://pypi.org/或https://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy2、在下载路径下空白处,按住Shift鼠标右键,选择在此处打开命令窗口执行安装命…

java 手机网站 cookie操作_java操作cookie问题

做的一个ssh项目,其中需要使用cookie来辅助记录用户页面访问量。可是我在使用的时候出现问题,就是我设置了有效期,但是关闭浏览器后或者重新打开另一个浏览器均不能获取到设置的coo...做的一个ssh项目,其中需要使用cookie来辅助记…

C语言指针用得好犹如神助!这些使用技巧值得收藏

指针用的好犹如神助,用不好会让你叫苦连连,但大多数人是用不好指针的,所以后来的很多语言都把指针封装,屏蔽。比如JAVA,java是没有指针的,但是很多地方都用到指针,不过不对用户开放,…

wso2_使用WSO2开发

wso2几个月以来,我又开始使用WSO2产品。 在接下来的文章中,我描述了我遇到的一些(小)问题以及如何解决它们。 设置开发环境时,我要做的第一件事是在Mac上下载Developer Studi o(64位版本)。 解…

python数据获取手段包括哪些_python开发应用-本地数据获取方法

文件的打开、读写和关闭文件的打开:file_objopen(filename,moder,buffering-1,...)filename是强制参数mode是可选参数,默认值是rbuffering是可选参数,默认值为-1(0代表不缓冲,1或大于1的值表示缓冲一行或指定缓冲区大小)f1open(e:…

有意思的C语言运算符

在C语言中,运算符用于执行程序代码运算,会针对两个或者两个以上操作数进行运算。比如:5 - 2,它的操作数是 5 和 2,而运算符则是 “-”。常见的运算符可大致分为 4 种类型:算术运算符、关系运算符、赋值运算…

java反向映射_opencv 直方图和直方图反向映射

histogram使用np进行直方图像素统计通过histogram对图像的三个通道分别进行一维直方图统计,由于被统计的数组必须是一维的,所以使用ravel将二维数组转换为一维数组,通过range参数指定统计区间为0--256,bin参数指定将统计区间分为2…

hamcrest_重新设计Hamcrest

hamcrest我在Hamcrest库上做了几篇文章 ,我确实很喜欢使用它,但是我希望对其进行一些更改。 我了解他们所做的大多数设计决策,但我认为其中一些确实不值得。 介绍Litecrest 我对库所做的大多数更改都有助于减轻Hamcrest的负担,因…