java - 如何列出在特定类加载器中加载的所有类

标签 java hierarchy classloader

出于调试原因和好奇,我希望列出加载到特定类加载器的所有类。

鉴于类加载器的大多数方法都受到保护,实现我想要的最佳方法是什么?

谢谢!

最佳答案

试试这个。这是一个骇客的解决方案,但它会做。

任何类加载器中的 classes 字段(自 1.0 以来在 Sun 的 impl 下)保存对加载器定义的类的硬引用,因此它们不会被 GC'd。您可以通过反射受益。

Field f = ClassLoader.class.getDeclaredField("classes");
f.setAccessible(true);

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
Vector<Class> classes =  (Vector<Class>) f.get(classLoader);

关于java - 如何列出在特定类加载器中加载的所有类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2681459/

相关文章:

c# - 您如何在层次结构的某个级别而不是最低级别调用类的方法?

java - 无法通过 wsimport 生成的源中的类路径方案获取 URL 的资源

java - 在 Eclipse 中使用指定的类加载器加载单例

java - 使用 toString() 方法打印对象

perl - 需要有关分层数据分页的建议

java - 我正在用 java 编写一个 Android 应用程序,我认为存在内存泄漏,但不知道如何修复它

checkbox - 将 Inno Setup 子组件显示为同级组件,并在复选框中显示检查而不是方形

java - 链式类加载器难题

java - 接口(interface)如何成为类成员并由类构造函数等实例化

java - LibGDX:过滤缩放的 TextureRegion