Java静态成员变量和静态方法以及普通成员变量和普通方法在JVM中存在不同的区域。
-
对于静态成员变量和静态方法,它们的存储区域是方法区(Method Area)。方法区是一块用于存储类的结构信息、静态变量、常量、编译后的代码等的内存区域。静态成员变量在类加载时被初始化,存储在方法区中。静态方法也在方法区中存储,且不依赖于类的实例。
-
普通成员变量和普通方法存储在堆内存(Heap)和栈内存(Stack)中。
-
普通成员变量在对象实例化时分配在堆内存中的对象实例中。每个对象实例都有自己的一组实例变量,存储在堆内存中。
-
普通方法的字节码被加载到方法区中,但方法的执行是在栈内存中进行的。每个线程都有自己的栈,栈中包含了方法的调用栈帧,用于存储局部变量和方法调用的相关信息。
-
需要注意的是,静态成员变量和静态方法的生命周期与类的生命周期一致,而普通成员变量和普通方法的生命周期与对象实例的生命周期相关。
总结:
- 静态成员变量和静态方法:存储在方法区。
- 普通成员变量:存储在对象的堆内存中。
- 普通方法:方法的字节码存储在方法区,方法的执行在栈内存中进行。
来源地址:https://blog.csdn.net/dougongzi/article/details/131387275