十五年测试老手,长期负责WEB\APP 项目测试,目前主要负责团队管理工作。

【转】YourKit Java Profiler 分析

上一篇 / 下一篇  2011-05-19 22:16:39 / 个人分类:java性能分析

程序分析思路 
'NUO)Ks"g jM:B0分析CPU得到应用程序中某个类中的方法被调用的次数及其CPU处理花费时间。 51Testing软件测试网6L H*V jwltK
操作方式 51Testing软件测试网I'g$L#S7jmZ!x5`-}
• Start or Stop CPU评估(profiling)(1) 51Testing软件测试网(}Z:K:gqpd;kZ
• 清除CPU之前的评估结果并且继续评估(2) 
#NB N0GL0• 保存此时的评估快照(Snapshots)(3) 51Testing软件测试网T,x fm7wU;y
评估方式(profiling): 
w(]$s7nTN:w h~0{0• Sampling(不包含方法调用,只含有CPU time) 51Testing软件测试网@;FCl2Avk8p
• Tracing(包含方法调用和CPU time) 
!})B7h/mYhR0分析参数:(主要从调用方法次数和调用时间来分析) 
iLf J#n1ge,@`\0• Calltree(all threads together) 51Testing软件测试网R0yQL0Uf d+S
• Calltree(by thread) 
*|Rpz/npk'x0• Hotspots 51Testing软件测试网/?`D(l?]$j
• Methods list 51Testing软件测试网 c a/Bt4T_8RdH^&l
51Testing软件测试网hh-pq+juV(@
总结: 51Testing软件测试网fz X.p)kAg@
1. 通过CPU Profile我们了解类、方法使用CPU处理的时间以及被调用的次数。 
B,p,N"j RS%_oO02. 通过CallTree了解调用的关系。通过Hotspots显示哪些包下的方法使用CPU处理的时间长及其被调用的次数。 
7`-^0~ `u3[!_2rf03. 重点分析CPU处理时间长同时调用的次数比较少的类、方法。或主观认为CPU处理时间应该很短而显示CPU处理时间长;主观认为调用的次数少而显示调用次数很多的类或者方法,进行重点分析。(不一定有问题。但是必须要去看看。)
 51Testing软件测试网c2ANK0T6W
分析Memory 
-mHi)s6X q0操作方式  
^/Mw'V%^v0• Capture memory snapshot (1) 
[w7?-q$Z,b3?n0• Start/stop object allocation recording (2)  51Testing软件测试网u}'hT"e?.dW
• Advance object generation number(3) 51Testing软件测试网Y:tV\R VdP
• Edit triggers(4) 
gnLad{(c0内存保留方式: 51Testing软件测试网IO&C }+D#t
• Shallow Size 
b-w$Nq9V;j:bT+O0• Retained Size 51Testing软件测试网*T.cjh_-R
分析参数: 51Testing软件测试网 d/E#Uz^H\*T
• Class list 51Testing软件测试网)g'x~&I'~ p/H(_#j C4L
o 显示类对象分配的内存 
p5wv1{;q$ZP0• Biggest Objects(domainators) 51Testing软件测试网5Yp`8bD"g&F
o 显示占有内存的单个对象 
:H$ENE5Ey }!BT0• Generations 
9f P"_9ecwq5V K$L0o 显示在某个时间段中产生的单个对象 
N |0b6SY0• Reachability scopes:显示GC与对象的关系(强对象,软对象,弱对象,虚引用) 
|A9zq/W*^ si+f\0o Objects unreachable from GC roots, but not yet collected 51Testing软件测试网)y8C;N3p%o-{
o Objects reachable from GC roots via strong references 
dD] Z R.D0o Objects reachable from GC roots via weak and/or soft references only 51Testing软件测试网M H5[(g6wBoE(|
o Objects pending finalization(Objects in the finalizer queue) 
:n7P F3[#H/cYJ0• Class loaders 
0U6U`g}0o 按类加载的顺序显示加载的类 51Testing软件测试网pAM I1fh3n
• Inspections 51Testing软件测试网)j`-\0lzu&WK,o'z
通过  
bh@ x)U#YO0进行分析。分析显示的参数请参考参数详解中的Inspections 51Testing软件测试网C'YR*QLx p V
总结: 
V Ugg d!e*_ B]F01. 通过Memory Profile我们了解类对象的具体存储及其类的加载方式、顺序。 
"X9c+{9qM[#yI"D |M/u W`02. 通过Memory  的Class List中可以查询出开发者直接编写的Class。分析编写的Class的对象及其占有的内存的大小。 
} Bd'L7u!x z03. 同时要想更好的了解Class对象的信息。请选择要查询的Class单击左键可以看见 。使用Path from GC Roots 、instances by Class 、Selected Objects、Retained Object进行查看你想了解的信息。可以通过集成IDE来关联到源码。选择Open Declaration in IDE Editor 
h N.iu9G04. 结合Class List 和Biggest Objects来进行分析:注意是否存在类占有很大内存和很大对象而与实际编写源码不相符。 
y#P2hO1d I,PAr9O-z/b05. 分析Inspections中给出的提示。
 
Rk)[i5Np0
1_k)R r7w0分析GC(Garbage Collection) 51Testing软件测试网 L0jw7rtF7A4k K0o
操作方式 
M&w jn7bSoz0• 先操作(1)再操作(2) 51Testing软件测试网!QL#`.z$i
分析参数 
q5u@ SM$w0• Call tree(all threads together) 
6s w@T w0• Calltree(by thread) 
9NVmFmf_0\0• Hot spots by object count 51Testing软件测试网"jH6|m1B
• Hot spots by object size 
ihp*u~tG+m1ZZ b0• Method list 51Testing软件测试网%W } ] Sx \0Td
总结: 51Testing软件测试网oL#Pl&u:n
1. GC操作比较频繁的类对象。是值得去注意的。因为该类可能产生了大量的临时对象。导致GC频繁操作。
 

TAG: YourKit

 

评分:0

我来说两句

Open Toolbar