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

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

举个简单的栗子:
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
网友评论