JVMでロードされたクラス名を取得する方法は?

JVMに読み込まれたクラス名を取得するには、Java Management Extensions(JMX)APIを使用することができます。具体的な手順は次の通りです:

  1. 最初、JVMへのJMX接続を作成する必要があります。これは以下のコードで実現できます:
import javax.management.MBeanServerConnection;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;

public class JMXClient {
    public static void main(String[] args) throws Exception {
        JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi");
        JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
        MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
        
        // 连接成功后可以进行后续操作
    }
}
  1. その後、MBeanServerConnectionオブジェクトを使用してロードされたクラス名を取得できます。具体的なコードは以下の通りです:
import javax.management.ObjectName;

public class JMXClient {
    public static void main(String[] args) throws Exception {
        // 省略创建JMX连接的代码
        
        ObjectName classLoadingMBean = new ObjectName("java.lang:type=ClassLoading");
        int loadedClassCount = (int) mbsc.getAttribute(classLoadingMBean, "LoadedClassCount");

        System.out.println("Loaded class count: " + loadedClassCount);
        
        String[] loadedClassNames = (String[]) mbsc.getAttribute(classLoadingMBean, "LoadedClassNames");
        for(String className : loadedClassNames) {
            System.out.println(className);
        }
        
        jmxc.close();
    }
}

上記のコードを使用すると、JVMにロードされたクラス名を取得してコンソールに出力することができます。JMX機能を有効にするためにJVMを起動する必要がありますので、具体的な方法についてはJVMのドキュメントを参照してください。

bannerAds