如何在 Eclipse 探查器中显示 java.lang.* 对象分配?

Posted

技术标签:

【中文标题】如何在 Eclipse 探查器中显示 java.lang.* 对象分配?【英文标题】:How do I display java.lang.* object allocations in Eclipse profiler? 【发布时间】:2010-06-07 13:38:15 【问题描述】:

使用 Eclipse 分析器,我对 java.lang 中分配的类实例的数量感兴趣(例如 String)。我也想知道像String.equals() 的来电次数等。

我使用“对象分配”选项卡并显示我的应用程序中的所有类和一个计数,但没有提及任何标准 java 类。

例如,这个愚蠢的代码在“对象分配”选项卡中显示为1000 Foo7 byte[]4 char[]2 int[]。没有别的了。

public static void main(String[] args) 

    Object obj[] = new Object[1000];
    for (int i = 0; i < 1000; i++) 
        new Foo();  // Some custom class
        obj[i] = new StringBuffer("foo" + i);
    
    System.out.println (obj[30]);

分析器似乎只是忽略了任何 java.* 包中的所有内容。这同样适用于执行统计信息。

我是否需要为核心 java 类启用检测,还是我在这里缺少某些设置?

【问题讨论】:

【参考方案1】:

如果您使用here 列出的同一个 Eclipse 分析器,则需要设置包含/排除过滤器。在您的情况下,您可以将特定的包或类添加到包含过滤器中,或者只是将其从预定义的排除过滤器中删除。我会选择前者,因为它是更保守的方法,并且很可能对您的应用程序性能的影响较小。从排除过滤器中删除某些内容可能会导致它删除的内容超出您的预期或想要的范围,这意味着检测了更多代码。

【讨论】:

啊,是的,我找到了!作为记录,该设置位于配置文件配置/监视器中。然后在树中选择“Java Profiling - JRE 1.5 or newer”并点击“Edit Options”。

以上是关于如何在 Eclipse 探查器中显示 java.lang.* 对象分配?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在探查器中获得的 C++ 运行时间不准确?

如何防止 Eclipse 在包资源管理器中显示打开的文件

Java Eclipse RCP 探查器

如何在 Java VisualVM 中显示探查器选项卡? [复制]

如何让 Eclipse 显示 .* 文件?

SQL2008如何跟踪某台电脑的执行语句?