一个类的多个实例,其方法在内存中只有一份拷贝方法存在于代码区中,而对象在堆中,而局部变量和方法参数存在于栈中,当调用一个对象的方法时就会执行代码区中的相应的指令即调用方法,当方法使用完后,即return 后 那些变量将被释放,所以方法在内存中只有一份拷贝,是不是这样,求解答,谢谢

解决方案 »

  1.   

    即调用方法,当方法使用完后,即return 后 那些变量将被释放,所以方法在内存中只有一份拷贝,是不是这样不是这样的,方法只有一份拷贝,是因为方法被编译成指令,保存在代码区,方法执行的时候,程序指针会跳到方法指令地址去取指令执行,不管有多少对象实例,方法的指令都是一样的,所以没必要有多份拷贝,一份就可以了,执行方法的时候,就到代码区的方法地址去取指令执行。
    而所谓的return 后变量释放什么的,那些是指方法栈的释放,不是一回事。
      

  2.   

    方法只是一堆字节码,一堆操作码,.class加载后就已经存在方法区
    对象是在堆中,局部变量在方法调用时才有,位于java栈的各个帧的局部变量区