如何检查在 YourKit 中记录对象分配期间创建了多少个类的实例?

Posted

技术标签:

【中文标题】如何检查在 YourKit 中记录对象分配期间创建了多少个类的实例?【英文标题】:How can I check how many instances of a class got created during recording of object allocation in YourKit? 【发布时间】:2013-07-29 08:24:34 【问题描述】:

我是YourKit profiler 的新手,在阅读了一些好评后想试一试。我正在尝试分析在 weblogic 应用程序服务器中运行的 webapp。我基本上想检查在我开始记录和停止记录对象分配之间创建了多少特定类的实例。我怎样才能做到这一点?我还想知道这些对象创建方法的堆栈跟踪。为此,我是否还必须在开始分配记录后捕获内存快照?如果是,那为什么?

【问题讨论】:

【参考方案1】:

我基本上想检查在我开始记录和停止记录对象分配之间创建了多少特定类的实例。我该怎么做?

查找记录的数字,例如搜索分配下的类。如果您记录每 10 次分配,则将其乘以 10 以估算数量。如果您需要准确的数字,则需要记录创建的每个实例(这会减慢您的应用程序)

我也想知道这些对象创建方法的堆栈跟踪。

您可以通过查看这些分配发生的位置来获得这些堆栈跟踪的摘要。

为此,我是否还必须在开始分配记录后捕获内存快照?

我怀疑这是开箱即用的支持,因为拍摄快照非常非常昂贵。但是,YourKit 提供了一个 API,您可以在每次创建此对象时通过将其添加到您要跟踪的对象的构造函数中以编程方式触发快照。

【讨论】:

这个api叫什么? 好久没看这个所以我用googleyourkit.com/docs/java/help/api.jsp

以上是关于如何检查在 YourKit 中记录对象分配期间创建了多少个类的实例?的主要内容,如果未能解决你的问题,请参考以下文章

JVM对象创建与内存分配机制

如何在 Karaf 的容器初始化期间记录 Blueprint (Aries) 创建的对象的初始化?

jvm中对象的创建过程

在自我分配期间,复制和交换习语如何工作?

YourKit - 完成的线程是啥意思?

java对象创建的过程