程序员

java面向对象之java虚拟机内存管理-对象和引用-空指针

2020-07-03  本文已影响0人  是归人不是过客

1、.class文件通过装载器进入java虚拟机内存
2、在java虚拟机内存中大概划分为:堆区、栈区、方法区
堆区:存放new出来的对象
栈区:存放指向对象的地址
方法区:存放class的代码、静态变量、常量


java内存的主要划分.png

当栈中的地址指向堆中对象的指针断开时,那么对象会变成垃圾,等待回收。


JVM.png

举个简单的栗子:

public class teacher {
    public static void main(String [] args) {
        Student stu = new Student();
//      stu是引用,保存内存地址指向堆中的对象。
        stu = null;
//      程序执行到此处,stu不再指向堆中的对象,对象变成了垃圾
        System.out.println(stu.age); //  java.lang.NullPointerException空指针异常
    }
}
public class Student {
    int age; // 成员变量
    Student(int _age){
        age = _age;
    }
}

输出:

Exception in thread "main" java.lang.NullPointerException
上一篇下一篇

猜你喜欢

热点阅读