Tomcat 中实例化Instrumentation,获取的时候是null

参考帖子https://bbs.csdn.net/topics/391962675,该贴描述了问题,但没有解决方案,以下是我的解决方式

premain方法调用,但tomcat程序中获取instrumentation是null,原因是premain是系统类加载器加载的,在我们应用程序加载之前就完成了,所以可用系统类加载器获取即能获取到

public class SizeTool {
  
    // 注意一定是public修饰
    public static Instrumentation instrumentation;

    public static void premain(String args, Instrumentation inst) {
        System.out.println(String.format("jvm内存初始化参数: %s,%s", args, inst));
        instrumentation = inst;
        int  i = 3;
        System.out.println("jvm内存初始化:" + instrumentation.getObjectSize(i));
    }

    public static Instrumentation getinst() {
        try {
            // 用系统类加载去加载
            return (Instrumentation) ClassLoader.getSystemClassLoader()
                    .loadClass(SizeTool.class.getName())
                    .getDeclaredField("instrumentation")
                    .get(null);
        } catch(Exception e) {
            return null;
        }
    }



    public static long sizeOf(Object o) {
        return getinst().getObjectSize(o);
    }

}

你的成员变量instrumentation在哪里初始化的呀?