YourKit Java Profiler 9.5.1 分析思考一


以下是我对使用YoutKit 对程序分析的一些想法!
程序分析思路
分析CPU得到应用程序中某个类中的方法被调用的次数及其CPU处理花费时间。
操作方式
• Start or Stop CPU评估(profiling)(1)
• 清除CPU之前的评估结果并且继续评估(2)
• 保存此时的评估快照(Snapshots)(3)
评估方式(profiling):
• Sampling(不包含方法调用,只含有CPU time)
• Tracing(包含方法调用和CPU time)
分析参数:(主要从调用方法次数和调用时间来分析)
• Calltree(all threads together)
• Calltree(by thread)
• Hotspots
• Methods list

总结:
1. 通过CPU Profile我们了解类、方法使用CPU处理的时间以及被调用的次数。
2. 通过CallTree了解调用的关系。通过Hotspots显示哪些包下的方法使用CPU处理的时间长及其被调用的次数。
3. 重点分析CPU处理时间长同时调用的次数比较少的类、方法。或主观认为CPU处理时间应该很短而显示CPU处理时间长;主观认为调用的次数少而显示调用次数很多的类或者方法,进行重点分析。(不一定有问题。但是必须要去看看。)

分析Memory
操作方式
• Capture memory snapshot (1)
• Start/stop object allocation recording (2) 
• Advance object generation number(3)
• Edit triggers(4)
内存保留方式:
• Shallow Size
• Retained Size
分析参数:
• Class list
o 显示类对象分配的内存
• Biggest Objects(domainators)
o 显示占有内存的单个对象
• Generations
o 显示在某个时间段中产生的单个对象
• Reachability scopes:显示GC与对象的关系(强对象,软对象,弱对象,虚引用)
o Objects unreachable from GC roots, but not yet collected
o Objects reachable from GC roots via strong references
o Objects reachable from GC roots via weak and/or soft references only
o Objects pending finalization(Objects in the finalizer queue)
• Class loaders
o 按类加载的顺序显示加载的类
• Inspections
通过
进行分析。分析显示的参数请参考参数详解中的Inspections
总结:
1. 通过Memory Profile我们了解类对象的具体存储及其类的加载方式、顺序。
2. 通过Memory  的Class List中可以查询出开发者直接编写的Class。分析编写的Class的对象及其占有的内存的大小。
3. 同时要想更好的了解Class对象的信息。请选择要查询的Class单击左键可以看见YourKit Java Profiler 9.5.1 分析思考一 。使用Path from GC Roots 、instances by Class 、Selected Objects、Retained Object进行查看你想了解的信息。可以通过集成IDE来关联到源码。选择Open Declaration in IDE Editor
4. 结合Class List 和Biggest Objects来进行分析:注意是否存在类占有很大内存和很大对象而与实际编写源码不相符。
5. 分析Inspections中给出的提示。


分析GC(Garbage Collection)
操作方式
• 先操作(1)再操作(2)
分析参数
• Call tree(all threads together)
• Calltree(by thread)
• Hot spots by object count
• Hot spots by object size
• Method list
总结:
1. GC操作比较频繁的类对象。是值得去注意的。因为该类可能产生了大量的临时对象。导致GC频繁操作。


你可能感兴趣的:(java,thread,ide)