由JVM进行管理
一、堆
1、存储所有new出来的对象,包含成员变量;
2、没有任何引用指向的对象就是垃圾;垃圾回收器不定时清理垃圾;回收过程是透明的;可调用System.gc(),建议GC尽快来回收。
3、成员变量的生命周期:创建对象时,存储在堆中,对象被回收时,成员变量一并被回收;建议对象不再使用时,及时将引用置为null;
二、栈
1、用于存储正在调用中的方法的所有局部变量,包含参数;
2、调用方法时在栈中为该方法分配一块对应的栈帧,栈帧中存储的是方法中的所有局部变量(包含参数),方法调用结束时,栈帧被清除,局部变量一并被清除;
3、局部变量的生命周期:调用方法时,局部变量被加载在栈中,方法调用结束时,栈帧中一起被清除;
三、方法区
1、用于存储.class字节码文件,包括方法
2、方法只有一份,对象在调用方法时,通过this指针来区分具体的对象。