最近在把一个重构完的项目放到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之使用相关推荐

  1. java mapper control_java spring boot中怎么编写mapper?怎么编写service和controller?

    上次已经为大家介绍过java spring boot中怎么加入依赖的主要内容了.今天再为大家介绍一些与之相关的内容,也就是java spring boot中怎么 编写mapper以及怎么编写servi ...

  2. 飞行机器人(四)DJI OSDK Mission Plan 和 航迹规划

    系列文章目录 第一章 飞行机器人(一)DJI平台OSDK简介飞行机器人(一)DJI平台OSDK简介_Techblog of HaoWANG-CSDN博客DJI OSDK/OSDK-ROS for M6 ...

  3. [翻译]现代java开发指南 第一部分

    现代java开发指南 第一部分 第一部分:Java已不是你父亲那一代的样子 第一部分,第二部分,第三部分 =================== 与历史上任何其他的语言相比,这里要排除c语言和cobo ...

  4. java实现fcfs_操作系统模拟FCFS作业调度(Java实现)

    1.作业和作业调度 概念:作业是用户提交给系统的一项相对独立的工作.操作员把用户提交的作业通过相应的输入设备输入到磁盘存储器,并保存在一个后备作业队列中.再由作业调度程序将其从外存调入内存. 2.先来 ...

  5. 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 ...

  6. JAVA GUI THREAD---***

    针对用户界面的多线程 GUI下面的多线程方式 1.与GUI类分离方式 分离方式,在创建线程类实例时需要代入GUI句柄,通过GUI句柄操作GUI,也就是说线程类和GUI类都要有对方的实例,以便相互操作. ...

  7. java改变线程堆栈大小,在运行时更新java线程的堆栈大小

    Does anyone know if there is a way to dynamically (runtime) increase the stack size of the main Thre ...

  8. 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 ...

  9. Grid Control 和 Database Control

    Oracle 自10g 以后,企业管理器(Oracle Enterprise Manager:OEM)变成了网页形式. OEM 分两种:Grid Control(网格控制) 和 Database Co ...

  10. java.lang.NoSuchFieldError: count at org.eclipse.jface.viewers.ColumnViewer$1.mouseDown

    学习swt开发,在开发treeviewer 按照例子编写代码过程中,一切都很顺利,一run,整颗树都出来了,但是点击图形界面任一地方,报错,如下: Exception in thread " ...

最新文章

  1. rman备份脚本shell版
  2. 微服务注册中心的选型和思考
  3. sys.argv[n] (终端运行python文件第n个参数) 在 pycharm 中的应用
  4. 难解?SAP云平台集成前路何方?
  5. 五大板块(1)—— 数组的定义,赋值与应用
  6. 基于iSroll 5.0实现的上拉加载和下拉刷新插件
  7. nuke无法理解服务器的响应,cuke4nuke服务器没有重新开始
  8. Jmeter+Ant+Jenkins接口自动化持续集成环境搭建(Linux)
  9. Resource Hacker+mysql安装会出现错误“应用程序无法启动因为应用程序的并行配置不正确”...
  10. 受损虚拟机的修复方法
  11. MNIST机器学习入门(二)
  12. 采用组策略Loopback功能限制文件夹重定向路径
  13. celery java_Celery(分布式任务队列) 的使用方法总结
  14. 迭代重心法 matlab,重心法
  15. 用HTML5制作简单的个人简历
  16. 微弱信号检测_第二版-高晋占
  17. Markdown写作工具盘点
  18. 笔记本HDMI1.4 1080p下外接高刷显示器的实现方法之一
  19. 谈谈对数据治理的理解
  20. 拨号vps是什么?有哪些功能?

热门文章

  1. week15 作业哈希算法
  2. MSP430F5438A+TM1650四位数码管显示+16位AD转换器ADS1110
  3. 什么是ASO,GooglePlayASO优化的方法有哪些
  4. matlab多个图例,Matlab 画多个图例( Plot multiple legends )
  5. es文件搜索不到win7服务器,ES文件浏览器Win7局域网共享错误解决方案
  6. 手机浏览器打开微信小程序,支持外部浏览器跳转到小程序
  7. 前端JS xxxx年xx月xx日转换成页面时间组件xxxx-xx-xx格式
  8. 如何将谷歌浏览器指定网页的背景颜色调成黑色,其他网页背景颜色不变——以HDLBits为例
  9. shiro原理_Shiro-实战(二)-身份认证
  10. [词性] 四、形容词