Class[] getAllLoadedClasses()//获取所有已经被加载的类。 Class[] getInitiatedClasses(ClassLoader loader)//获取所有已经被初始化过了的类。 long getObjectSize(Object objectToSize)//获取某个对象的(字节)大小,注意嵌套对象或者对象中的属性引用需要另外单独计算。 boolean isModifiableClass(Class<?> theClass...
retransformClasses:对于已经加载的类重新进行转换处理,即会触发重新加载类定义,需要注意的是,新加载的类不能修改旧有的类声明,譬如不能增加属性、不能修改方法声明 redefineClasses:与如上类似,但不是重新进行转换处理,而是直接把处理结果(bytecode)直接给JVM getAllLoadedClasses:获得当前已经加载的Class,可配合retransfor...
Class[] classes=inst.getAllLoadedClasses();for(Class clazz : classes) { System.out.println(clazz.getName()); } } } MANIFEST.MF内容为: Manifest-Version:1.0Agent-Class: agantmainDemo Premain-Class: agantmainDemo Can-Redine-Classes:trueCan-Retransform-Classes:true 打包代码为一个独立的jar包,...
>[] cLasses = inst.getAllLoadedClasses(); for (Class<?> cls : cLasses) { System.out.println("PreMainAgent get loaded class:" + cls.getName()); } inst.addTransformer(new DefineTransformer(), true); } static class DefineTransformer implements ClassFileTransformer { @Override public...
Class[]getAllLoadedClasses()//获取所有已经被加载的类。Class[]getInitiatedClasses(ClassLoader loader)//获取所有已经被初始化过了的类。longgetObjectSize(Object objectToSize)//获取某个对象的(字节)大小,注意嵌套对象或者对象中的属性引用需要另外单独计算。booleanisModifiableClass(Class<?>theClass)//判断对应...
Instrumentation.getAllLoadedClasses()方法来获取所有当前被加载的类的Class对象。Java agent是Java SE的...
Class[] getAllLoadedClasses()//获取所有已经被加载的类。 Class[] getInitiatedClasses(ClassLoader loader)//获取所有已经被初始化过了的类。 long getObjectSize(Object objectToSize)//获取某个对象的(字节)大小,注意嵌套对象或者对象中的属性引用需要另外单独计算。 boolean isModifiableClass(Class<?> theClass...
Class[]getAllLoadedClasses()//获取所有已经被加载的类。 Class[]getInitiatedClasses(ClassLoader loader)//获取所有已经被初始化过了的类。 longgetObjectSize(Object objectToSize)//获取某个对象的(字节)大小,注意嵌套对象或者对象中的属性引用需要另外单独计算。
getAllLoadedClasses() 获取当前被 JVM 加载的所有类对象 redefineClasses 和 retransformClasses 补充说明 两者区别: redefineClasses 是自己提供字节码文件替换掉已存在的 class 文件 retransformClasses 是在已存在的字节码文件上修改后再进行替换 替换后生效的时机 ...
agentmain的逻辑也比较简单,关键主要就是利用java.lang.instrument.Instrumentation#getAllLoadedClasses来获得JVM已经加载的类,以及使用System.getProperty来获得JVM实际运行的一些关键信息 注:使用agentmain也可以获得获取所有已经初始化过的类,或者类的大小等等。