如何计算Java应用程序运行时使用哪个类的次数

如何计算Java应用程序运行时使用哪个类的次数,java,class,count,profiling,classloader,Java,Class,Count,Profiling,Classloader,我想我需要设置一些分析器,或者配置类加载器来保存这些信息。我需要的是: 当JVM运行时,我需要执行一个进程来跟踪类加载器加载的java文件。跨越所有线程(也包括进程,但这是另一个JVM) 所以在输出中,我需要知道哪个类被使用了多少次 你能为这些提供一些工具和配置示例吗?这最好是一个免费的命令行工具。您应该使用Java分析器。一些开源选项是。探查器肯定会提供这些信息,但您需要在评测下运行JVM,这会带来性能成本 如果您计划按需从生产系统收集这些信息,那么可能需要使用JMX对您感兴趣的类/包进行测试

我想我需要设置一些分析器,或者配置类加载器来保存这些信息。我需要的是: 当JVM运行时,我需要执行一个进程来跟踪类加载器加载的java文件。跨越所有线程(也包括进程,但这是另一个JVM)

所以在输出中,我需要知道哪个类被使用了多少次


你能为这些提供一些工具和配置示例吗?这最好是一个免费的命令行工具。

您应该使用Java分析器。一些开源选项是。

探查器肯定会提供这些信息,但您需要在评测下运行JVM,这会带来性能成本

如果您计划按需从生产系统收集这些信息,那么可能需要使用JMX对您感兴趣的类/包进行测试。然后,您可以使用诸如HP OpenView或Nagios之类的工具来监视这些值。讨论如何开始使用JMX。也许JVM已经收集了一些东西,我不知道


JMX方法的缺点是,您必须事先知道要收集什么并适当地插入目标类。

如果您只需要查看加载了哪些类,就可以运行这些类

java -verbose:class com.your.Class

类被使用了多少次是什么意思?
:创建的实例数?方法调用的数量?加载的版本数(如果您有不同的类加载器)?你需要这些信息做什么?我需要知道这个类被加载了多少次。我需要这些信息来统计(一个内部任务)哪些类使用最多,哪些类根本没有使用。在这种情况下,只需创建一个内存转储并对其进行分析。您应该能够看到类加载器实例以及它们引用的
class
对象。通常情况下,每个类装入器装入一个类,但是在某些系统中,类装入器可能引用另一个类(例如,JBoss类装入器肯定会对
java.lang
类等执行此操作),这是一个常见的分析任务。有许多探查器,例如。G或者使用/你问是因为你有更大的目标,比如让应用运行得更快?或者您只是想消除未使用的类?