java mission control_Java Mission Control之使用
最近在把一个重构完的项目放到beta环境测试时,
顺带实践了一下Java Mission Control(简称JMC)来分析jvm。发现确实好用,个人觉得作为要收费的JProfile的代替品已经足够用了。
JMC可以看的东西太多,选一些自己觉得最有用的来总结一下:
JMC
JDk7 7u40之后自带。主要有两种功能
实时监控JVM运行时的状态
Java Flight Recorder 取样分析
实时监控
如果是远程服务器,使用前要开JMX
-Dcom.sun.management.jmxremote.port=${YOUR PORT}
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=${YOUR HOST/IP}
File -> Connetct -> Create A New Connection, 填入上面JMX参数的host和port,服务器账号密码。
jmc_main_monitoring
通过“+”按需添加各种统计图表
Action
Triggets
可以选择各种Action,Condition设置条件,条件达到Action就会被触发。
例如,你可以设置heap dump当接近memory limit;又或者在CPU高消耗期间触发 JFR recoding了解发生了什么鬼。
另外action也可以选择log或者发送邮件的方式
Memory
Memory
内存tab提供heap和GC的信息。个人最主要看GC次数、时间;以及随着GC发生heap的内存变化情况,以便来调整jvm参数进行优化。
Threads
Threads
主要看每条线程所占的CPU、死锁检测以及线程是被哪个代码阻塞的(Lock Name)
Flight Recorder
要使用取样,需要先添加参数
-XX:+UnlockCommercialFeatures
-XX:+FlightRecorder
取样时间默认1分钟,可自行按需调整,事件设置选为profiling,然后可以设置都需要profile哪些信息,比如:
加上对象数量的统计:Java Virtual Machine->GC->Detail->Object Count/Object Count after GC
方法调用采样的间隔从10ms改为1ms(但不能低于1ms,否则会影响性能了): Java Virtual Machine->Profiling下的两个选项
Socket与File采样, 10ms太久,但即使改为1ms也未必能抓住什么,可以干脆取消掉: Java Application->File Read/FileWrite/Socket Read/Socket Write
然后就开始Profile,到时间后Profile结束,会自动把记录下载回来,在JMC中展示。
General
JVM Information tab包含所有JVM 参数,可以在这里查看,当然也可以在服务器上通过 XX:+PrintFlagsFinal 查看
Memory
GC详细信息(Garbage Collections、GC Times)- gc次数,每次gc时的详细信息,几时发生gc,什么gc,持续时间,clean了多少空间等
内存分配(Allocations) - 让对象分配情况无所遁形。 按类、按线程、对象的创建调用栈来查看对象创建情况, 可以看到TLAB内/外的分配情况(每条线程在Heap里分了一个Thread Local Area,在TLAB里的内存分配不需要线程竞争)
一般来说,尽可能确保以下几点,你的程序会跑得更快:
分配更少的对象
尽可能少进行 full gc
尽可能少在TLAB外分配对象
Code
Hot packages: 热点packages统计,看以看每个Java package的耗时
Hot classes:热点class统计,能看出哪个class最耗CPU
Threads
Contention:线程争夺,统计哪些线程被哪些方法阻塞,阻塞多久
Lock Instances:展示哪些锁实例会导致线程争夺
要提高吞吐量,可以根据以上两点来做优化
参考:
java mission control_Java Mission Control之使用相关推荐
- java mapper control_java spring boot中怎么编写mapper?怎么编写service和controller?
上次已经为大家介绍过java spring boot中怎么加入依赖的主要内容了.今天再为大家介绍一些与之相关的内容,也就是java spring boot中怎么 编写mapper以及怎么编写servi ...
- 飞行机器人(四)DJI OSDK Mission Plan 和 航迹规划
系列文章目录 第一章 飞行机器人(一)DJI平台OSDK简介飞行机器人(一)DJI平台OSDK简介_Techblog of HaoWANG-CSDN博客DJI OSDK/OSDK-ROS for M6 ...
- [翻译]现代java开发指南 第一部分
现代java开发指南 第一部分 第一部分:Java已不是你父亲那一代的样子 第一部分,第二部分,第三部分 =================== 与历史上任何其他的语言相比,这里要排除c语言和cobo ...
- java实现fcfs_操作系统模拟FCFS作业调度(Java实现)
1.作业和作业调度 概念:作业是用户提交给系统的一项相对独立的工作.操作员把用户提交的作业通过相应的输入设备输入到磁盘存储器,并保存在一个后备作业队列中.再由作业调度程序将其从外存调入内存. 2.先来 ...
- java wav 时间,Java-调整WAV文件的播放速度
I'm likely dense but I cannot seem to find a solution to my issue (NOTE: I CAN find lots of people r ...
- JAVA GUI THREAD---***
针对用户界面的多线程 GUI下面的多线程方式 1.与GUI类分离方式 分离方式,在创建线程类实例时需要代入GUI句柄,通过GUI句柄操作GUI,也就是说线程类和GUI类都要有对方的实例,以便相互操作. ...
- java改变线程堆栈大小,在运行时更新java线程的堆栈大小
Does anyone know if there is a way to dynamically (runtime) increase the stack size of the main Thre ...
- java 8流在另一个流_Java 8流– Java流
java 8流在另一个流 Welcome to Java 8 Stream API tutorial. In the last few java 8 posts, we looked into Jav ...
- Grid Control 和 Database Control
Oracle 自10g 以后,企业管理器(Oracle Enterprise Manager:OEM)变成了网页形式. OEM 分两种:Grid Control(网格控制) 和 Database Co ...
- java.lang.NoSuchFieldError: count at org.eclipse.jface.viewers.ColumnViewer$1.mouseDown
学习swt开发,在开发treeviewer 按照例子编写代码过程中,一切都很顺利,一run,整颗树都出来了,但是点击图形界面任一地方,报错,如下: Exception in thread " ...
最新文章
- rman备份脚本shell版
- 微服务注册中心的选型和思考
- sys.argv[n] (终端运行python文件第n个参数) 在 pycharm 中的应用
- 难解?SAP云平台集成前路何方?
- 五大板块(1)—— 数组的定义,赋值与应用
- 基于iSroll 5.0实现的上拉加载和下拉刷新插件
- nuke无法理解服务器的响应,cuke4nuke服务器没有重新开始
- Jmeter+Ant+Jenkins接口自动化持续集成环境搭建(Linux)
- Resource Hacker+mysql安装会出现错误“应用程序无法启动因为应用程序的并行配置不正确”...
- 受损虚拟机的修复方法
- MNIST机器学习入门(二)
- 采用组策略Loopback功能限制文件夹重定向路径
- celery java_Celery(分布式任务队列) 的使用方法总结
- 迭代重心法 matlab,重心法
- 用HTML5制作简单的个人简历
- 微弱信号检测_第二版-高晋占
- Markdown写作工具盘点
- 笔记本HDMI1.4 1080p下外接高刷显示器的实现方法之一
- 谈谈对数据治理的理解
- 拨号vps是什么?有哪些功能?
热门文章
- week15 作业哈希算法
- MSP430F5438A+TM1650四位数码管显示+16位AD转换器ADS1110
- 什么是ASO,GooglePlayASO优化的方法有哪些
- matlab多个图例,Matlab 画多个图例( Plot multiple legends )
- es文件搜索不到win7服务器,ES文件浏览器Win7局域网共享错误解决方案
- 手机浏览器打开微信小程序,支持外部浏览器跳转到小程序
- 前端JS xxxx年xx月xx日转换成页面时间组件xxxx-xx-xx格式
- 如何将谷歌浏览器指定网页的背景颜色调成黑色,其他网页背景颜色不变——以HDLBits为例
- shiro原理_Shiro-实战(二)-身份认证
- [词性] 四、形容词