Java 关于字节码和ASM的一些疑问

Java 关于字节码和ASM的一些疑问,java,java-bytecode-asm,Java,Java Bytecode Asm,这是我的示例代码 public void leak() { super.superMap = new ConcurrentHashMap<Integer, MemLeak>(); int i=1; while(true) { // This put method should be called infinite times super.superMap.put(i,new MemLeak("test"));

这是我的示例代码

 public void leak()
{
    super.superMap = new ConcurrentHashMap<Integer, MemLeak>();

     int i=1;
    while(true) {

        // This put method  should be called infinite times
        super.superMap.put(i,new MemLeak("test"));


        try {
            Thread.sleep(10);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        i++;

    }

“asm输出”是什么意思?你能在这里提供更多的上下文吗?(我们不知道从第一个代码块转换到第二个代码块的过程是什么…@JonSkeet:我正在使用
asm
framework修改字节码。我使用
asmiger
类来查看字节码修改的ASM等效输出。我正在使用
MethodVisitor
类修改字节码。那么您正在执行什么修改?在字节码中,方法调用的出现频率应该与源代码中的出现频率相同,而源代码中的出现频率正好是一次。不要将它与执行代码时发生的循环混淆。我不知道你为什么看了三遍。
public void visitMethodInsn(int opcode, String owner, String name,
            String desc) {
    super.visitMethodInsn(opcode, owner, name, desc);

        // keep a check whether the owner class is Map or ConcurrentHashMap     
            System.out.println("Method called..."+owner+"\t "+name+"\t "+desc);



    }