从堆转储中提取类定义的需求来自某些类的动态加载方式,而不是静态lib jar,而是动态编译或通过网络加载的方式。堆转储的大小与实际堆的大小相同,因此我假设所有类都存在,可能在permgen中。目的是提取.class文件形式的定义以供进一步检查。

最佳答案

似乎没有任何工具可以让您轻松地从VM中检索类位,更不用说从堆转储中了。也不清楚类定义是否甚至可以以与VM中.class内容完全相同的格式使用。

但是,有多个选项可用于在将类定义加载到VM中之前保存类定义。您可能有一个可以将类定义存储在堆或外部存储中的代理。使用自定义类加载器也应该可以做到这一点,但是其他一些客户类加载器可能会绕过它。

流行的AOP工具AspectJ可以选择保存检测类的定义。它可能可以用于您的用例。

07-24 09:37
查看更多