面向对象-oop-8-内存管理

  • 内存管理:由JVM来管理
    • 堆:
      • 存储new出来的对象(包括实例变量)
      • 垃圾:没有任何引用所指向的对象
      • 垃圾回收器(GC)不定时到内存中清扫垃圾
      • 回收过程是透明的(看不到的),不一定一发现就立刻回收,通过调用System.gc()可以建议JVM尽快调度GC来回收垃圾
      • 实例变量的生命周期:
        • 创建对象时存储在堆中,对象被回收时一并被回收
      • 内存泄漏:不再使用的内存还没有被及时的回收,严重的泄露会导致系统的崩溃
        • 建议:不再使用的对象应及时将引用设置为null
    • 栈:
      • 局部变量的生命周期:
        • 调用方法时存储在栈中,方法结束时与栈帧一并被清除
      • 调用方法时,在栈中为该方法分配一块对应的栈帧,栈帧中存储的是局部变量和方法的参数,方法调用结束时,栈帧被自动清除,局部变量一并被清除
      • 存储正在调用的方法中的局部变量(包括方法的参数)
    • 方法区:
      • 存储 .class字节码文件(包括静态变量、方法)
      • 方法只有一份,通过this(对象)来区分具体的调用方法

  • GC:垃圾回收器
    • 垃圾收集器在一个 Java 程序中的执行是自动的
    • 不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块
    • 程序员唯一能做的就是通过调用 System.gc()方法来"建议"垃圾收集器去进行垃圾回收处理,但其是否可以执行,什么时候执行却都是不可知的。
  • 面向对象三大特征
    • 封装
      • 类:封装的时对象的属性和行为
      • 方法:封装的是特定的业务逻辑功能实现
      • 访问控制修饰符:封装的是具体的访问权限
  • 继承:代码复用
    • 超类:所有派生类共有的属性和行为
    • 接口:部分派生类共有的属性和行为
    • 派生类/实现类:派生类特有的属性和行为
    • 单一继承、多借口实现,传递性
  • 多态
    • 行为多态:所有抽象方法都是多态的(通过重写来实现)
    • 对象多态:所有对象都是多态的(通过向上造型为实现)
    • 向上造型、强制类型转换、instanceof判断

  • 三个简单异常
    • ClassCastException类型转换异常,避免用instanceOf判单
    • ArrayIndexOutOfBoundsException数组下标越界
    • nullPointException空指针异常
  • 注意:复用性、扩展性、维护性一定要好,设计软件时候,能用父类,就绝对不用子类,用父类的时候就代表多个,用子类的话就代表一个写死了
  • 实例变量有默认值,局部变量没有默认值
shou(){
   int a;
   System.out.println(a)//编译错误,局部变量没有初始化
  }
  • 没有引用指向的对象,都是垃圾
 //没有引用指向的对象 都是垃圾
 //这里是把a 的地址赋给了aa
 //a=null,此时 对象a就是垃圾了,但是 aa不是垃圾,因为aa有地址
  Airplane a = new Airplane()
  Airplane aa = a;

  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值