确实,每个对象都有自己的实例变量副本。但是,像静态成员一样,实例方法只有一个副本吗?如果是,那么它在内存中的位置?
答案 0 :(得分:1)
内存中只需要一个实例方法的副本。当一个实例方法被调用时,会有一个"这个"变量隐式包含在堆栈中。 "这" variable允许实例方法访问调用它的对象实例的实例变量。
类,包括它们的方法,通常会在长期堆中结束,因为它们被垃圾收集的情况并不常见。
答案 1 :(得分:0)
但是,像静态成员一样,只有一个副本 实例方法?
是的,无论实例数量和方法是否为静态,所有对象只有一个副本。
如果是,那么它在内存中的位置?
堆。
答案 2 :(得分:0)
是。 逻辑上,一个类的每个实例中的方法共享一个算法。内存的行为方式类似。每个对象都调用一个方法算法,并且在方法调用期间将所需的值临时推送到堆栈。
Method是一组要遵循的指令,而不是数据结构。它不应该专门分配内存。
方法调用指令分别存储在RAM中,与其他应用程序指令相同。这不是Java内存分配过程的一部分。