我正在开发一个部署在Weblogic中的webapp。经过一些重新部署后,PermGen用完空间,所以我不得不断定webapp有一个类加载器泄漏......
我正在使用Yourkit来调查泄漏,但发现自己陷入困境,因为我甚至不知道哪个类加载器正在泄漏:当我进行内存转储并打开它时,Yourkit向我展示了几十个(更确切地说:289)类加载器实例。从名字我可以猜测,其中一些不是那些,但仍然留下了许多可能性。
我尝试在使用应用程序之前/之后比较类加载器列表(这是一种有效的方法吗?),但它没有用,因为大多数类加载器都是同一类的实例,所以我不这样做知道哪个实例是我感兴趣的实例。
Yourkit报告的类加载器类是:
如果您已经知道Weblogic已经使用了哪些加载Web应用程序的类,那么这将有所帮助,因为我没有在Weblogic文档中找到它。 任何人都可以建议一种方法来查找特定的类加载器实例吗?
答案 0 :(得分:0)
我最终使用了GenericClassLoader
和ChangeAwareClassLoader
的每个实例的加载类列表(因为它们似乎是最有可能的)并检查它们是否有我自己的类(过滤时)包)。
webapp类加载器是ChangeAwareClassLoader
的实例。