获取所有JVM使用的所有Java类的列表?

时间:2014-08-01 13:31:12

标签: java linux classloader

我希望有一个列表,列出在某个特定时刻在多个线程/ JVM中加载的所有类。

我知道当您使用-verbose参数运行java时,您可以将其写入文件,如下所示:java -verbose:class com.package.Foo > classes-used.txt

但是,我的主程序中有一些线程使用shell脚本来启动一个新jar。我想避免在每个shell脚本中编写-verbose参数,我想知道在Linux上是否有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:6)

您可以使用JDK附带的jcmd命令。它不需要在启动时将任何特殊参数传递给JVM。

jcmd 

将列出当前正在运行的所有JVM及其pid(进程ID)。

jcmd <pid> GC.class_histogram
然后

将列出当前在该JVM中加载的每个类,以及实例数量的计数。