JVM

堆栈,方法区

 

堆:
    堆存放的就是我们创建的一个个实例变量。
    被所有线程共享
栈    
    每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象)
    每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
方法区
    又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
    方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
    
Age myage= new Age(26)

代码区:存放类,方法的代码块
堆内存(动态分配):  存放new的对象的实例Age
栈内存:存放对象的引用(局部变量)age
栈内存地址: 是个值,如果是基础类型,就是值,如果是引用,是个整数,这个内存地址指向堆内存对象.   
栈内存对象引用的名称: myage

//测试new对象,内存的执行过程类
public class Age{
    int id;
    Age(int -id){
        this.age = -id;
    }
}

内存执行过程: 
1.栈内存开辟一块内存,名称叫 ,里面存了一个值(内存地址,非堆内存对象的物理地址),
堆内存开辟一块空间,没有名称,是一个Age对象,myage的值(内存地址)指向堆内存new的这个对象,
即通过栈内存地址可以找到堆内存对象。

2.堆内存Age对象初始化,调用自身的构造方法,先在栈内存开辟一块内存,名称叫-id,值为26
(因为new的基础类型,所以只占栈内存的空间,并不会去堆内存开辟一个Integer对象并通过-id指向它),
执行构造方法将-id的值传递给Age对象的id,构造方法调用完,栈内存-id回收(方法执行完,局部对象回收)。
堆内存的Age对象内部开辟一块内存,名称id,值26.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值