Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASM。JAVA有可能有效地计算方法调用的数量吗?不添加新的类成员_Java_Java Bytecode Asm - Fatal编程技术网

ASM。JAVA有可能有效地计算方法调用的数量吗?不添加新的类成员

ASM。JAVA有可能有效地计算方法调用的数量吗?不添加新的类成员,java,java-bytecode-asm,Java,Java Bytecode Asm,有可能有效地计算方法调用的数量吗?无需添加新的类成员(静态计数器变量)?您可以通过提供的静态方法挂钩报告调用。然后简单地添加一条invokestatic指令以及您想要传递的参数。一种简单的方法会传递方法名和描述符,但由于这都是在运行时发生的,因此可以通过在第一次扫描类时使用检测API注册每个方法来避免每次调用时的字符串比较,并返回一个简单的标记(一个int或long),并修改每个方法,以便在调用记录调用的方法时传递该令牌。谢谢!最好是在每个类中添加静态变量。然而,在这种情况下,我需要存储带有键方

有可能有效地计算方法调用的数量吗?无需添加新的类成员(静态计数器变量)?

您可以通过提供的静态方法挂钩报告调用。然后简单地添加一条
invokestatic
指令以及您想要传递的参数。一种简单的方法会传递方法名和描述符,但由于这都是在运行时发生的,因此可以通过在第一次扫描类时使用检测API注册每个方法来避免每次调用时的字符串比较,并返回一个简单的标记(一个
int
long
),并修改每个方法,以便在调用记录调用的方法时传递该令牌。

谢谢!最好是在每个类中添加静态变量。然而,在这种情况下,我需要存储带有键方法令牌和方法调用量的哈希映射。这是一个相当大的结构。