美文网首页程序员
java面向对象之java虚拟机内存管理-对象和引用-空指针

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

作者: 是归人不是过客 | 来源:发表于2020-07-03 17:16 被阅读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
    

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/zvosqktx.html