垃圾收集器与内存分配策略

来源:互联网 发布:排八字软件 编辑:程序博客网 时间:2024/04/30 09:17

垃圾收集器与内存分配策略

对象已死吗?

  • 引用计数算法(大部分Java虚拟机没有采用此法)
    • 引用一次加一,引用失效减一
  • 可达性分析算法

如下图object5,6,7虽然互相联系,但GC Roots是不可达的,所以被判断为可回收对象

GC Roots
Object1
Object2
Object3
Object4
Object5
Object6
Object7

在Java语言中可作为GC Roots的对象包括下面几种

虚拟机栈(帧栈中的本地变量表)中引用的对象

方法区中静态属性引用的对象

方法区中常量引用的对象

本地方法栈中JNI(即是Native方法)引用的对象

再谈引用

  • JDK1.2对引用的概念进行了扩充
    • 强引用(Strong Reference)
    • 软引用(Soft Reference)
    • 弱引用(Weak Reference)
    • 虚引用(Phantom Reference)
  • 强引用
    • 普遍存在如Object obj=new Object()
    • 只要强引用还在,垃圾搜集器永远不会回收被引用的对象
  • 软引用
    • 有用但是非必须
    • 系统将要发送内存溢出异常之前,把这些对象列进回收范围之中进行二次回收.这次回收还没足够的内存,才会抛异常
    • JDK1.2之后提供SoftReference类实现类引用
  • 弱引用
    • 也是描述非必须对象,但是强度比软引用更弱一些,被弱引用关联的对象只能生存到下一次垃圾收集发送之前
    • 垃圾回收器工作时无论内存是否充足,都会回收掉弱引用的对象
    • JDK1.2之后提供了WeakReference
  • 虚引用(幽灵引用或者幻影引用)
    • 是否有虚引用的存在,完成不会对其生存时间构成影响,也无法通过虚引用来取得一个实例
    • 目的只是为了在这个对象被收集器收集时提供收到一个系统通知
    • JDK1.2之后通过PhantomReference类实现虚引用

生存还是死亡

  • Java中的finalize()没大多实际作用,当初诞生的目的是为了让C/C++程序员更好接受,可以忘记它的存在

回收方法区

  • 方法区主要是废弃常量和无用的类的回收
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 神笔添加视频尺码不符合怎么办 闲鱼卖家单号填错了怎么办 户户通没有信号强度怎么办 全民k歌qq登不上怎么办 手机直播没电了怎么办 淘宝退货卖家拒收怎么办 充的会员卡店家关门了怎么办 淘宝手机号码被注册了怎么办 淘宝不支持七天无理由退货怎么办 微信视频横屏怎么办 房子里潮气太重怎么办 淘宝不小心注销了怎么办 淘宝号不小心注销了怎么办 xp网络驱动没了怎么办 淘宝卖家客服态度差怎么办 怀孕吃辣椒喉咙好痛怎么办 淘宝店铺建议不要提交认证怎么办 淘宝买东西商家不退款怎么办 淘宝买东西商家不发货怎么办 在微信上买东西被骗了怎么办 新浪微博自动关注人怎么办 搜淘宝找不到关键词和店铺怎么办 小超市开在一起竞争太大怎么办 淘宝店铺被投诉盗图怎么办 充电宝ic坏了怎么办 淘宝店宝贝权重下降怎么办 淘宝卖家评分低怎么办 淘宝买东西客服不理人怎么办 支付宝本次交易嫌疑违规怎么办 支付宝一年的交易总额怎么办 交易关闭钱扣了怎么办 交易猫账号绑定支付宝打不开怎么办 拼多多涉假处罚怎么办 淘宝店铺重复铺货扣6分怎么办 帆布鞋子买大了怎么办 开淘宝店没销量怎么办 开淘宝店没有销量怎么办 淘宝买东西支付密码错了怎么办 淘宝登入密码忘记了怎么办 逛街时手机没电了怎么办 逛街手机没有电了怎么办