Memory leaks 如何使用Yourkit查找我的Web应用程序的类加载器?

Memory leaks 如何使用Yourkit查找我的Web应用程序的类加载器?,memory-leaks,weblogic,classloader,yourkit,Memory Leaks,Weblogic,Classloader,Yourkit,我正在开发一个部署在Weblogic中的webapp。经过几次重新部署后,PermGen的空间不足,因此我不得不断定webapp存在类加载器泄漏 我正在使用Yourkit调查该漏洞,但我发现自己被卡住了,因为我甚至不知道哪个类加载器正在泄漏:当我进行内存转储并打开它时,Yourkit会向我显示几十个(更准确地说:289个)类加载器实例。从名字上,我可以猜到其中一些并不是真正意义上的,但这仍然留下了很多可能性 我尝试在使用应用程序之前/之后比较类加载器列表(这是一种有效的方法吗?),但这没有帮助,

我正在开发一个部署在Weblogic中的webapp。经过几次重新部署后,PermGen的空间不足,因此我不得不断定webapp存在类加载器泄漏

我正在使用Yourkit调查该漏洞,但我发现自己被卡住了,因为我甚至不知道哪个类加载器正在泄漏:当我进行内存转储并打开它时,Yourkit会向我显示几十个(更准确地说:289个)类加载器实例。从名字上,我可以猜到其中一些并不是真正意义上的,但这仍然留下了很多可能性

我尝试在使用应用程序之前/之后比较类加载器列表(这是一种有效的方法吗?),但这没有帮助,因为大多数类加载器都是同一对类的实例,所以我不知道哪个实例是我感兴趣的

Yourkit报告的类装入器类包括:

  • sun.misc.Launcher$AppClassLoader
  • weblogic.utils.classloaders.GenericClassLoader
  • weblogic.utils.classloaders.ChangeAwareClassLoader
  • java.net.URLClassLoader sun.misc.Launcher$ExtClassLoader
  • weblogic.servlet.jsp.JspClassLoader
  • weblogic.diagnostics.query.QueryCompiler
  • sun.reflect.DelegatingClassLoader
  • javax.management.remote.rmi.NoCallStackClassLoader
  • 如果您已经知道Weblogic使用了其中的哪一个来加载webapp的类,那么这将很有帮助,因为我在Weblogic文档中没有找到它。
    还有谁能提出一种方法来找到特定的类加载器实例吗?

    我最后求助于查看
    GenericClassLoader
    ChangeAwareClassLoader
    的每个实例的加载类列表(因为它们似乎是最有可能的),并检查它们是否有我自己的类(在包中过滤)。 webapp类加载器是
    changeAwreclassloader
    的一个实例