内存管理:Java的JVM自动管理内存
主要分为3部分:
堆:存储使用new关键字所创建的对象
成员变量的生命周期为:从对象在堆中创建开始到对象从堆中被回收结束。
垃圾回收器(GC)是JVM自带的一个线程(自动运行着的程序),用于回收没有任何引用所指向的对象(垃圾)
垃圾回收过程对程序员来说是透明的,不定期检查,可以人为的调用System.gc()方法来加速回收资源
内存泄漏:不再被使用的内存没有被及时的回收,当不再被使用的对象仍有引用指向它时,不能被及时回收
- 建议当对象不再被使用时,及时将引用指向null
栈:存储所用的局部变量
过程:调用方法时为该方法分配对应的一个栈帧,在栈帧中包含该方法的参数和局部变量,方法调用结束时,栈帧被清除,局部变量失效
局部变量的生命周期为:从该方法被调用开始到该方法调用完
成员变量与局部变量的差别如下:
局部变量:
1) 定义在方法中;
2) 没有默认值,必须初始化;
3) 方法被调用时,存在栈中,方法调用结束时局部变量从栈中清除;
成员变量:
方法区:存放类的信息(.class)和方法,类只被加载一次,加载后,方法只有一份,通过this来区分具体的对象1) 定义在类中,方法外;
2) 由系统设定默认初始值,可以不显式初始化;
3) 所在类被实例化后,存在堆中,对象被回收时,成员变量失效;