有没有办法获得ClassLoader加载了哪些类?

2022-09-02 22:52:38

我正在尝试为旧框架实现一些单元测试。我正在尝试模拟数据库层。不幸的是,我们的框架有点旧,没有完全使用最佳实践,所以没有明确的关注点分离。我有点担心试图模拟数据库层可能会使JVM加载大量甚至不会使用的类。

我不太了解类加载器,所以这可能不是问题。有没有办法在特定ClassLoader加载的所有类上达到峰值,以证明引擎盖下发生了什么?


答案 1

您可以创建自己的类装入器,并在单元测试期间使用它进行装入。让您自己的自定义类加载器打印出它正在做什么。

或者,如果您只想知道加载了哪些类,请执行以下操作:

java -verbose:class

答案 2

请注意,使用

java -verbose

将产生大量的产出。将输出记录到文件中,然后使用 grep。如果你有“T恤”过滤器,你可以试试这个:

java -verbose | tee classloader.log
grep class classloader.log

推荐