从堆转储中提取类定义的需要来自动态加载某些类的方式,而不是来自静态lib jar,而是动态编译或通过网络加载。堆转储具有与实际堆相同的大小,因此我假设所有类都在那里,可能在permgen中。目标是以.class文件的形式提取定义以供进一步检查。
答案 0 :(得分:1)
似乎没有任何工具可以让您从VM中检索类位,更不用说从堆转储中检索。也不清楚类定义是否以与VM中.class的内容完全相同的格式提供。
但是在将类定义加载到VM之前,有多种选项可用于保存类定义。您可以拥有一个可以在堆或外部存储中存储类定义的代理。这也应该可以使用自定义类加载器,但有可能被其他客户类加载器绕过。
流行的AOP工具AspectJ可以选择保存检测类的定义;它可能可以用于你的用例。