Java——面向对象(2).内存管理

内存管理:由JVM实现
1)堆:
1.1)用于存储所有new出来的对象(包括成员变量)
1.2)成员变量的生命周期:
创建(new)对象时存在堆中,对象被GC回收
1.3)垃圾:没有任何引用所指向的对象
垃圾回收器(GC)不定时到堆中查看,看到垃圾则自动回收
回收过程是透明的,并不是看到垃圾马上回收
若想他回收快一点,则可以调用System.gc()
1.4)内存泄漏:不再使用的对象还没有被及时的回收,严重的内存泄露会因为过多的内存占用而导致程序崩溃
GC线程判断对象是否可以回收的依据是根据该对象是否有引用指向,因此,当对象不再使用时,应及时将引用设置为null
Cell() c = cell()
c = null
2)栈:
2.1)用于存储正在调用中的方法的所有的局部变量(包括参数)
2.2)调用方法时在栈中为该方法分配一块对应栈帧
栈帧中包含所有的局部变量(包括参数)
方法结束调用时,栈帧消失,局部变量一并消失
2.3)局部变量的生命周期:
存在于调用的栈中,调用结束时,和栈帧一并消失
一个运行的Java程序从开始到结束会有多次方法的调用。
JVM会为每个方法的调用在栈中分配一 个对应的空间,这个空间称为该方法的栈帧。
一个栈帧对应一个正在调用中的方法,栈帧中存储了该方法的参数、局部变量等数据。
当某一个方法调用完成后,其对应的栈帧将被清除,局部变量失效。
3)方法区:
当类的信息被加载进方法区时,除了类的类型信息以外,同时类内的方法定义也被加载进方法区
类在实例化对象时,多个对象会拥有各自在堆中的空间,但所有实例对象是公用在方法区中的一份方法定义的。
3.1)用于存储.class、字节码文件(包括方法)
3.2)方法只有一份

学过CPP感觉这种东西都是晓得的

猜你喜欢

转载自blog.csdn.net/qq_37597439/article/details/81063164