java 内存管理:java的内存由JVM管理
堆:用来存储所有new 出来的对象,全部放进堆里。并且成员变量(类中)也在堆里(默认值为0)。
成员变量的生命周期:创建对象时存在堆中,对象被回收时,成员变量一并消失
垃圾回收器(GC):GC会不定时到堆中查看,看到没有任何引用所指向的对象。看到垃圾自动回收。并不是GC 看到所有垃圾就回收,弱想让它快一些收,可以调用System.gc();
内存泄漏:不在使用的对象没有被及时回收 当对象不再使用,应及时将引用为null
栈:1.用于存储正在调用中的方法的局部变量(参数列表里的变量和方法里的变量)
2.调用方法时,在栈中为该方法分配一块对应的栈桢,栈帧中包含所有的局部变量,方法调用结束时,栈帧消 失,局部变量一并消失
3.局部变量的生命周期 : 调用方法时存在栈中,方法结束栈帧消失,栈帧消失,局部变量一并消失
4.栈中有引用,引用存储的是地址, 指向堆中的对象。如果 引用为null。我们无法通过引用地址访问,则这个 对象为垃圾但是栈中不一定存储引用,有可能堆中存储引用 如对象数组:enetity[0] 为引用, 引用中为对 象,也存在于堆中
方法区:方法区里专门去存放类的信息(.class) JVM类加载器装载类 方法也一并在方法区,一个类只被加载一次 方法 只有一份所有对象共享一个方法。 用this 区分 那个对象调用的方法
成员变量随着对象生成有默认值,局部变量生成没有初始化没有默认值