文档章节

《Java性能优化指南》读书笔记-JVM性能监控

杨武兵
 杨武兵
发布于 2015/07/07 09:02
字数 835
阅读 135
收藏 1

关于性能监控、分析和调优的定义

平时根本不太关注这个定义的区分,今天仔细看了一下关于这三个内容的定义,也确实加深了一些理解。它们三者之间是一个递进的关系。它们三者的定义分别如下:

性能监控通常是指一种在生产、质量评估或者开发环境中实施的带有预防性或主动性的活动。一般对系统本身的性能影响较小。它是宏观层面的日常监视,以期待发现问题。

性能分析是指一种以侵入方式收集运行性能数据的活动,它会影响应用的吞吐量或响应性。它是对于所报性能问题的一种回应,关注的范围通常比性能监控更加集中,也更加细致。

性能调优则是一种为改善应用响应性或者吞吐量而更改参数、源代码或者属性配置的活动。它通常是在性能分析之后进行的活动。通常我们会在进行了一项调优之后还需要继续监控和分析,以验证性能调优的效果是否达到预期目标,若未达到目标则还会进行下一轮的性能监控、分析和调优的活动,直至达到目标为止。

JVM性能监控内容

垃圾回收监控

主要是监控JVM中垃圾回收的运行状况,主要反映了JVM内存的使用情况和垃圾对象的回收状况。

主要监控的数据有这些:

1.当前minor gc和full gc分别使用的垃圾收集器;

2.java堆的大小;

3.年轻代和年老代的大小;

4.年轻代中eden区和Survive区的比率。

5.永久代的大小;

6.minor gc的持续时间和频率。

7.full gc的持续时间和频率。

8.垃圾回收每次的空间回收量。

9.垃圾回收前后各区域的大小;

10.触发full gc的原因。

11.是否显示调用了System.gc();

JIT编译

JIT编译能够提升应用的运行效率,也会额外消耗CPU和内存资源,监视JIT编译的执行效率和耗时也有助于发现JVM应用的性能问题。

JVM启动参数中添加: -XX:+PrintCompilation参数可以在日志中打印出编译运行状况。

类加载

java程序在运行过程中若用到新的类都会加载到JVM中,类的代码和属性会存储在JVM的永久代中,类加载和卸载会影响到永久代的回收。

线程栈

线程的锁竞争情况,也是对于java应用性能影响较大的因素,因此对于锁竞争情况的监控对于发现java应用的性能问题价值也非常大。

使用jstack命令即可对列举出一个java进程的所有线程,包括线程的运行状态,锁定信息等。




© 著作权归作者所有

杨武兵

杨武兵

粉丝 264
博文 61
码字总数 123254
作品 1
昌平
架构师
私信 提问
Android--面试中遇到的问题总结(三)

《Android 开发工程师面试指南 LearningNotes 》,作者是陶程,由梁观全贡献部分。大家可以去知乎关注这两位用心的少年。这份指南包含了大部分Android开发的基础、进阶知识,不仅可以帮助准备...

sealin
2017/02/22
0
0
用思维导图来学java虚拟机,轻松易懂!

说明 本篇文章是对周志明的《深入理解Java虚拟机》的读书笔记,思维导图使用Mindjet MindManager。曾经看到过这样一句话: 关于教育,有一个经典的定义是:把在学校里学到的东西全部忘掉,最...

小刀爱编程
2018/10/12
0
0
透视宝Java深度监控 有奖体验

应用程序一出错,你就抓狂。 Java作为应用最广泛的程序设计语言之一,怎可少得了一个监控。 透视宝Java监控全面开放试用,不用你就亏了! 活动详情 1、免费申请入口:http://cloudwise.mikecr...

cloudwiseAPM
2015/10/21
1K
6
[Java学习探讨]为什么学Java虚拟机的Java程序员更值钱?

[Java学习探讨]为什么学Java虚拟机的Java程序员更值钱? 曾经的我经常害怕处理与JVM相关的异常,对JVM的配置参数也一无所知,那时候我天真地认为,JVM的出现本身就是想让程序员屏蔽实现细节,...

原创小博客
2018/07/19
0
0
读书笔记之《Java并发编程的艺术》-线程池和Executor的子孙们

读书笔记部分内容来源书出版书,版权归本书作者,如有错误,请指正。 欢迎star、fork,读书笔记系列会同步更新 git https://github.com/xuminwlt/j360-jdk module j360-jdk-thread/me.j360....

Hi徐敏
2015/11/11
0
1

没有更多内容

加载失败,请刷新页面

加载更多

利用mybatis generator生成实体类、Mapper接口以及对应的XML文件

项目中通常会遇到数据的持久化,如果是采用mybatis的orm,就会涉及到生成xml的问题,刚好mybatis官网提供了这么个插件MyBatis Generator,效果简直是棒呆。 1. 首先需要在build.gradle文件中...

啊哈关关
今天
2
0
SpringSocial相关的知识点

使用SprigSocial开发第三方登录 核心类 ServiceProvider(AbstractOauth2ServiceProvider):主要负责实现server提供商(例如QQ,微信等共有的东西),默认实现类是AbstractOauth2ServiceProvider...

chendom
今天
1
0
Java并发之AQS详解

一、概述   谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!   类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源...

群星纪元
昨天
2
0
Fabric-sdk-java最新教程

Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK的最新精选教程。 如果希望快速掌握F...

汇智网教程
昨天
2
0
react 子组件监听props 变化

componentWillReceiveProps //已经被废弃 getDerivedStateFromProps// 推荐使用//如果条件不存在必须要返回null static getDerivedStateFromProps(props, current_stat...

一箭落旄头
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部