Q:当有人说程序运行的很慢的时候,他指的是什么?
A:他通常所指的是两个性能属性中的一个 -- 延迟/扩展性。延迟是描述完成给定任务所需的时间长短,然而扩展性描述的是当负载增加时对性能是如何影响的。构建高性能的应用程序需要
1.低延迟 -- 比如,很短的页面加载时间
2.高扩展性 -- 比如,在用户量增加的同事不会对性能带来不利的影响
3.高可用性 -- 比如,保证24 * 7的可用,不会因为内存泄露、数据库连接耗尽或者LDAP服务器而服务不可用
如上图所示,很多原因都会对性能有所影响。它包括一个设计糟糕的程序、数据库、不能很好扩展的负载不良的架构设计,虚拟机、应用服务器、或者一个性能差劲的sql语句,多个线程同时等待长时间运行的加锁方法、代码块或者数据库记录带来的频繁回溯跟踪产生的线程争用问题。因为对系统稀有资源进行操作消耗的更多的CPU周期带来的过度的垃圾回收或者内存与连接的耗尽等这些内存或者非内存的泄露也都会让性能大打折扣。
Q.应该使用什么工具来对程序进行调优?
A.针对java程序的调试,有一些基本工具比如vmstat、hrof、JConsole、JAMon以及PerfAnal,也有一些有更多特性的打包调优工具例如VisualVM、NetBeans profiler、eclipse TPTP(也就是测试和性能工具平台),还有能被用在生产环境中的比如YourKit for Java、JProfiler for Java,还有针对于大规模分布式和集群系统的比如CA Wiley Introscope for Java、HP Sitescope and ClearStone for Java。
Q.应该怎么样去进行java程序的调优?
A.下面的例子是用hprof工具来估算java程序运行耗费的cpu时间。根据依赖的底层操作系统不同,在win32上使用Ctrl + \或者Ctrl + Break组合键或者在程序退出的时候将调试信息导出到java.hprof.txt文件中。在Solaris系统或者linux系统上此文件是通过接收退出信号生成的(kill -QUIT)。可以通过jps命令查询到线程id。使用hprof agent执行Profiling Test类来计算耗费的cpu时间的命令格式如下:
java -agentlib:hprof=cpu=times test.ProfilingTest
调试信息会被转储到名字为“java.hprof.txt”的文件中。
CPU TIME (ms) BEGIN (total = 1953) Thu Sep 15 12:26:50 2011 rank self accum count trace method 1 51.20% 51.20% 1 301025 ProfilingTest.invokeMethod3 2 31.23% 82.44% 1 301015 ProfilingTest.invokeMethod2 3 15.21% 97.64% 1 301005 ProfilingTest.invokeMethod1 4 0.82% 98.46% 1 300396 java.net.URLClassLoader$1.run 5 0.77% 99.23% 2 300707 java.io.Win32FileSystem.normalize 6 0.77% 100.00% 268 300309 java.lang.StringBuilder.append CPU TIME (ms) END
使用PerfAnal图形化分析工具分析上面的信息
也可以用相似的方式来分析内存占用信息.
相关推荐
太细了,堪称完美总结:“Java性能调优六大工具”之Windows工具(csdn)————程序
阿里巴巴Java性能调优华山版是一套系统性能调优教程,!通过这份笔记的学习,你将会有一个系统的调优头脑和策略!快了何止100%?需要的朋友可下载试试! 众所周知性能调优可以使系统稳定,用户体验更佳,甚至在...
Java生产环境下性能监控与调优详解视频教程 jstat查看JVM统计信息 jstack与线程的状态 MAT 分析内存溢出的方法 可视化工具分析GC日志 通过这套视频学习如何在生产环境下进行性能监控与调优。 视频在百度网盘中...
Java性能测试与调优案例分析,Java性能测试与调优案例分析
java性能调优大全,内置了较全的资料: visualVM使用 JVM性能调优,典型配置,JVM启动配置。 OMM的场景 jstat详解 性能分析工具比对 内存溢出解决方法。
性能调优--0:前言 2 性能调优--2:性能调优方法 4 性能调优--3:硬件网络层面调优 5 性能调优--4:操作系统层面调优 5 性能调优--5:J2EE容器层面调优 5 性能调优--7:J2EE后台层面调优 10 性能调优--8:J2EE前台...
阿里巴巴Java性能调优实战
Java性能调优,场景最强最全的 有阿里大牛分享 值得推荐
罗列了常用的java性能调优命令 用相关的示例阐述了每个命令的用法
Java性能调优 6步实现项目性能全面升级+面试高频性能问题讲解视频教程分享,性能优化的N种企业级解决方案,囊括了【数据库优化】、【Tomcat优化】、【JVM优化】、【垃圾回收】、【Netty优化】、【Nginx优化】、...
Java生产环境下性能监控与调优详解 本课程将为你讲解如何在生产环境下对Java应用做性能监控与调优;通过本课程,你将掌握多种性能监控工具应用,学会定位并解决诸如内存溢出、cpu负载飙高等问题;学会线上代码调试...
阿里+Java+开发手册(嵩山版).pdf 阿里巴巴Java性能调优实战(2021华山版).pdf
阿里巴巴Java性能调优实战(2021华山版)
JVM系列之性能调优参考手册(实践篇).pdf,资源分享达人
Java性能调优指南.pptx
Java性能调优工具简介,包括Linux系统层面的调优工具介绍和java层面调优的工具介绍
78-Java性能调优实战.zip78-Java性能调优实战.zip78-Java性能调优实战.zip78-Java性能调优实战.zip78-Java性能调优实战.zip78-Java性能调优实战.zip78-Java性能调优实战.zip78-Java性能调优实战.zip78-Java性能调优...
Java GC与性能调优文档 作者:高飞
Java性能调优工具及方法介绍 可配合工具用于内存泄漏问题快速排查
基于JDK命令行的监控 基于JVisualVM的可视化监控 基于Btrace的监控调试 Tomcat性能监控与调优 Nginx性能监控与调优 JVM层GC调优 JVM字节码与java代码层调优