JAVA
JDK
Java开发工具箱
Java Development Kit
JRE
Java Run Environment
java运行环境
JVM
java虚拟机
程序是在JRE的JVM里面运行的,所以内存是指的在JVM中
分为
栈区
堆区
方法区
栈:!
JVM中的内存结构图
可以知道,栈区是储存方法的,当调用方法时,就会在栈区开辟一块内存,如下图
堆:!
堆区是存放关于对象的数据,每new一个对象,就会在堆区开辟一块内存去存储这个对象。如下图
那么空指针异常的发生在内存图是如何表示的呢?我们已经知道,空指针异常是在引用为null的时候,用其访问实例变量或实例方法发生的,在内存图中如下所示
在对象中存在一个关键字 this,他在内存图中的位置是存在于堆中的对应对象中的,如下图所示
static修饰的变量和方法被称为静态变量/静态方法,他们是存储在方法区的,也就是在类加载的时候最先被加载。
静态static修饰的都是在方法区存储,在类加载是执行,且按照顺序由上而下执行!