Java中静态方法在内存的哪个位置?
静态变量是加载在方法区的,内存分配即在方法区,当创建类的时候堆里有静态变量的指向地址,然后栈内的对象可以通过堆内地址找到该静态变量,为大家共用。
那静态方法呢?也是在方法区中分配内存吗?是随着类的加载而初始化的吗?
在类中还有一个叫做静态代码块和构造代码块(即没有静态修饰的只被{}的代码),创建对象的时候会默认先加载静态代码块和构造代码块,这里的print会被打印出来,然后加载构造方法,而本类中的静态方法只是在调用的时候才被使用。
静态方法和普通方法是一样的,只有调用的时候才会使用,方法不存在什么初始化的。
调用方法的时候,静态方法和普通方法生成的字节指令是不一样的,所以这样就可以辨别出你调用的是静态方法还是普通方法
java的方法,都被编译成字节码了,作为类的类型信息保存在.class文件中。
静态方法不需要初始化,方法的本质就是一系列的字节码(也就是执行指令),只有类才需要初始化,方法不会被初始化的。
可参考:从JVM内存管理的角度谈谈JAVA类的静态方法和静态属性
https://wenku.baidu.com/view/22adc9f9aef8941ea76e05ae.html
https://ask.csdn.net/questions/212226
静态方法运行时,在哪个内存区域中?
在栈区