[Java]Java类和对象内存分配详解

描述

代码说明:
一.当Person p1 = new Person();第一次被调用时需要做两件事:
1.先判断类加载器是否加载过Person类,如果没有则加载到Person类型到方法区
2.在堆中开辟内存空间,在栈中对象名引用(指向)堆的相应内存空间
二. p1.name = '皓皓': 将堆中name赋值为‘皓皓’;
三. Person p2 = new Person(): 此时方法区中已经存在Person类,所以不需要再次加载
四. p2.name = 'john'; 将堆中name赋值为‘john’;

类和对象代码

// 创建类
public class Person{
    // 编写属性
    String name;
    int age;
    doubel height;
    // 编写方法
    public void eat(){

    }
} 


// 类的实例化
public static void main(String[] args) {
    Person p1 = new Person();
    p1.name = '皓皓':
    Person p2 = new Person():
    p2.name = 'john';
}

类和对象内存分配详解图

image

总结

栈:对象的引用、局部变量
堆:对象、全局变量
方法区:类信息

猜你喜欢

转载自www.cnblogs.com/skyell/p/10075556.html