Java应用性能分析

原创 2017年01月03日 14:28:51

性能分析

  • 概念:性能分析是一种从运行的应用程序中收集性能数据的活动,该活动可能会对应用程序的响应性吞吐量造成影响。其很少在生产环境中进行,通常在质量评估、测试或者开发环境中进行,作为监控活动发现性能问题时的后续活动。
  • 其包括方法分析内存分析

方法分析

  • 提供Java应用程序中方法执行时间的信息
  • 工具Oracle Solaris Studio Performance Analyzer,它能够对Java方法及本地方法进行分析。
  • 术语
    • 包含时间(Inclusive Time) 。方法自身及其子调用方法的执行时间总和。
    • 独占时间(Exclusive time)。执行某方法的时间,不含此方法调用其他方法的时间开销。
    • 归因时间(Attributed time)。被某方法调用所产生的时间开销。
    • 系统态CPU时间(System CPU)。方法运行在内核态时所占的时间或者时间比率。
    • 用户态CPU时间(User CPU)。方法运行在非内核态时所占的时间或者时间比率。
  • 指标:每个指标都细分为包含时间和独占时间
    1. 用户态CPU时间
    2. 系统态CPU时间
    3. 锁竞争时间 (用户态锁指标)
  • 性能分析步骤:
    1. 从Call Tree选项卡入手,从较高的层次快速了解应用程序在哪个用例上消耗了很多时间
    2. 从程序设计入手修改,

Call Tree

  1. 作为补充,使用Functions选项卡对样本数据进行分析,找出应用程序中执行最多的热点方法,改进某个方法实现

Functions选项卡

  1. 减少对系统态CPU的使用。系统调用所消耗的CPU时间可用于运行程序
  2. 尽量减少锁竞争(需要搞明白为什么锁竞争降低程序性能?)
  3. 方法分析中 <JVM-System>标识是个通用占位符,代表Java虚拟机内部进行垃圾收集、JIT编译、装载类及其他JVM内部管理活动所消耗的时间,按说方法分析的时候应该忽略。

内存分析

  • 同方法分析的着眼点不同,它提供Java应用程序内存的使用信息,包括内存中已分配对象的数目、大小以及活跃对象等信息,并附有对象分配时的栈追踪信息。
  • 工具:NetBeans Profiler
  • 术语

    • Allocated Objects(分配对象)。性能分析器跟踪的对象数
    • Live Objects(活动对象)。当前堆上分配的对象数目,这部分对象位于内存中。
    • Live Bytes(活动对象大小)。显示活动对象使用的堆内存大小。
    • Avg.Age(平均年龄)。活动对象的平均年龄,对象的年龄指该对象经历的垃圾收集次数。年龄总数除以活动对象数即为平均年龄
    • Generation(代)。根据活动对象进行统计。对象年龄是该对象经历垃圾收集次数。代的值是活动对象按年龄大小分成不同代之后的代的个数。按代排序常常可以帮助我们定位内存泄露的源头是哪一个类。这是因为代值的增加是内存泄露的一个典型特征。

    使用NetBeans Profiler 分析内存

  • 内存分析方法

    • 对结果进行快照,关注那些分配了大量内存并具有较短平均年龄的对象,这些是减少对象分配的良好着眼点。减少对象分配的方法和策略有:减少调整底层容器大小的次数池化对象(Netty中使用)。但是,通常情况下使用对象池不是一个好办法,除非分配回收这些对象的代价很大。缺点有:不易管理,提升编程难度,容易导致内存泄露,使用不当性能也是无法提高。或者说,这个和java编程思想是有违背的,应该作为最后的优化手段。
    • 定位内存泄露
    • 分析堆转储
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

在 NetBeans IDE 中对 Java 应用程序进行性能分析的简介

在 NetBeans IDE 中对 Java 应用程序进行性能分析的简介 NetBeans IDE 中包含一款功能强大的性能分析工具,可提供与应用程序的运行时行为有关的重要信息。通过 NetBean...

JAVA基础应用——使用VisualVM进行性能分析及调优

VisualVM是JDK自带的免费的,集成了多个JDK命令行工具的可视化工具,为Java应用程序做性能分析及调优 VisualVM通过 jvmstat、JMX、SA(Serviceability A...
  • xundh
  • xundh
  • 2017年03月07日 08:24
  • 324

性能测试-Java应用服务器分析

一:应用服务器介绍 1.主流服务器:tomcat、Apache、Jboss、Weblogic、IIS、Nginx 等 2.服务器拓扑图 browser                     w...

关于java web应用的性能分析

前一段时间对一个应用做性能的提升,最终从qps 50 搞成了大约400。 这里总结了一下一些方面,希望对大家有所帮助。 总体来说,当你的应用qps不理想,或者访问出现问题是,大致有4个方面需要去查看...

java应用性能内存调优

  • 2013年07月05日 10:51
  • 450KB
  • 下载

Java 运行时监控,第 3 部分: 监控应用程序生态系统的性能与可用性

本文为 Java™ 应用程序运行时监控 系列 的第三部分,也是最后一部分,主要介绍在监视应用程序支持和依赖服务的性能和可用性时应使用哪些策略与技巧。所谓支持和依赖服务包括底层主机操作系统、运行数据库以...

构建高性能的大型分布式java应用

  • 2016年06月26日 13:48
  • 1.53MB
  • 下载

Java应用Tomcat执行过程之性能调优

Tomcat 请求过程描述: 1、用户发送请求,被转发到8080端口,被Coyote Http/1.1 Connector获取。 2、Connector把请求交给servic...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java应用性能分析
举报原因:
原因补充:

(最多只允许输入30个字)