JVM(Java虚拟机)内存分类简介

本文详细介绍了Java中的五种主要内存区域:程序计数器、堆内存、JVM方法栈、本地方法栈及方法区。解释了这些内存区域的主要用途及其在程序运行过程中的作用,并通过示例展示了对象创建及引用的过程。

1. 程序计数器内存 :记录程序执行的行号,记录程序执行到哪里。

2. 堆内存:存储对象的,所有用new关键字创建的对象都是存在堆内存中,堆内存存储对象的空间是不固 定的,但每个对象的内存空间都有地址。 

3. JVM方法栈内存 :JVM每执行一个方法,都会为方法创建一个方法栈内存,方法中所有的变量、参数等 都在方法栈中声明。执行一个方法时,JVM就会将方法栈内存的栈帧压入到JVM方法栈内存中。

例如:调用了a() 方法,在a()方法中调用 b() ,我们都知道 b()执行完毕后,a()才能执行完毕 ; JVM现将a方法的 栈帧压入JVM栈内存,a方法执行完毕后从JVM栈内存中弹出 。

4. 本地方法栈内存 :当用Java语言调用其他语言的方法功能时。

5. 方法区 :存储类信息的。

class Test{
    void a(int i){
        Person p = new Person();
        b();
        System.out.println("hello");
    }
    void b(){
        Person p = new Person();
        System.out.println("b hello");
    }
    public static void main(String[] args){
        Test t = new Test();
        t.a();
    }
}

 

 

Person p1 = new Person();
    //p1中的地址 存储到 p2中
    Person p2 = p1;
    //p1中地址清空,p1没有存储任何的地址
    p1 = null;
    p2 = null;
    //Person对象再也 操作不到了
    //空指针异常 NullPointerException
    //调用了一个引用为空的 属性或方法时
    p1.name = "tom";
    //假设在下行出现了空指针异常
    System.out.println(a);
    System.out.println(a.b);
    a.b.c().d().toString(); //找a是不是null ;a.b是不是null ;a.b.c()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aigo-2021

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值