内存管理:由JVM来管理
堆
- 用于存储所有new出来的对象(包括成员变量)
- 成员变量的生命周期:
创建(new)对象时存在堆中,对象被GC回收时一并消失 - 垃圾:没有任何引用所指向的对象
垃圾回收器(GC)不定时到堆中查看,看到垃圾则自动回收
回收过程是透明的,并不是一看到垃圾就马上回收
若想让它快一些收,可以调用System.gc() - 内存泄漏:不再使用的对象没有被及时的回收
建议:当对象不再使用时应及时将引用设置为null
栈
- 用于存储正在调用中方法的所有局部变量(包括参数)
- 调用方法时在栈中为该方法分配一块对应的栈桢,
栈桢中包含所有的局部变量(包括参数),
方法调用结束时,栈桢消失,局部变量一并消失 - 局部变量的生命周期:
调用方法时存在栈中,方法调用结束时与栈桢一并消失
方法区
- 用于存储.class字节码文件(包括方法)
- 方法只有一份,通过this来区分具体是哪个引用