![]() 上一页 |
![]() 下一页 |
对于任意指定类名,只要具有该名称的各个类均使用不同的类加载器加载,则可以加载多个类。在某些 JVM 环境中,这种情况可能比其他环境中更为常见。加载的各个类可能都是从相同的类文件创建的。不过,它们也有可能是相同类的不同版本,例如,在某个应用程序中运行了同一应用程序的两个版本。它们也可能是完全不同的类,只不过偶然使用了相同的全限定类名,这可能是由于没有遵守命名规范造成的。有时,泄漏仅发生在部分具有特定名称的已加载类中,而不在其他类中发生。
根据情况,有可能必须区分同名的类。在另一些情况下,这可能无关紧要。因此,“趋势”选项卡和“类型图形”选项卡均提供了两种类视图。默认情况下,所有同名类会进行组合并显示为单个联接类型。确定是否存在多个同名类的最简单方法是查看图标,因为联接类型具有两个类圆圈或一组方括号,而不仅是一个圆圈或方括号。将光标放在类型行上可获得详细信息。此时将显示工具提示,其中列出联接到该类型中的所有类,如图:“相同类型的多个版本”工具提示中所示。您还可以在表中启用额外的列来显示类加载器信息。
如果其中一个联接类型造成了问题,则整个联接类型都将显示为红色。您可以随后切换模式来显示单个类,确定是所有类都在增长还是可以确定单个类为问题的起因。
可以扩展“趋势”选项卡的此视图,按类加载器显示类型,然后将类型重新组合以返回默认视图。
要拆分类,请执行以下操作:
单击“拆分类”按钮:

拆分类时,“类加载器”和“类加载器 ID”列显示各个类型的相应类加载器信息。
要组合类,请执行以下操作:
单击“联接类”按钮:

请注意,此时“类加载器”和“类加载器 ID”列显示“多个”。