/**
* 示例类,展示各种成员在JVM中的存储位置
*/
public class MemoryDistributionExample {
// 1. 实例变量(普通成员变量) - 存储在堆内存的对象实例中
private int instanceVar = 10;
private String instanceRef = "Instance Reference";
// 2. 静态变量(类变量) - 存储在方法区/元空间
private static int staticVar = 20;
private static String staticRef = "Static Reference";
// 3. 常量 - 存储在方法区/元空间的常量池
public static final int CONSTANT_INT = 100;
public static final String CONSTANT_STR = "CONSTANT_STRING";
// 4. 实例方法 - 方法字节码存储在方法区/元空间
public void instanceMethod() {
// 5. 局部变量 - 存储在栈帧的局部变量表中
int localVar = 30;
String localRef = "Local Reference";
System.out.println("实例方法执行");
System.out.println("可以访问所有变量:");
System.out.println("instanceVar: " + instanceVar);
System.out.println("staticVar: " + staticVar);
System.out.println("CONSTANT_INT: " + CONSTANT_INT);
System.out.println("localVar: " + localVar);
}
// 6. 静态方法 - 方法字节码存储在方法区/元空间
public static void staticMethod() {
// 局部变量同样存储在栈帧中
int localStaticVar = 40;
System.out.println("静态方法执行");
System.out.println("只能访问静态变量和常量:");
System.out.println("staticVar: " + staticVar);
System.out.println("CONSTANT_STR: " + CONSTANT_STR);
// System.out.println(instanceVar); // 错误!不能访问实例变量
}
public static void main(String[] args) {
// 创建对象实例
MemoryDistributionExample obj = new MemoryDistributionExample();
// 调用实例方法
obj.instanceMethod();
// 调用静态方法
MemoryDistributionExample.staticMethod();
// 访问常量
System.out.println("直接访问常量: " + CONSTANT_INT);
}
}