zoukankan      html  css  js  c++  java
  • 4、判断对象的存活

    1、概述

    • GC需要完成的3件事情:
      • 哪些内存需要回收?
      • 什么时候回收?
      • 如何回收?
    • 当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,需要对这些“自动化”的技术实施必要的监控和调节。
    • 程序计数器、虚拟机栈、本地方法栈不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟随着回收啦。

    2、对象已死吗

    引用计数法
    • 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。
    • 主流虚拟机没有选用引用计数算法来管理内存,其中最主要的原因是它很难解决对象之间相互循环引用的问题。
    • 引用计数算法的缺陷:
    // test()方法执行后,objA和objB会不会被GC呢?
    public class ReferenceCountingGC {
        public Object instance = null;
        private static final int _1MB = 1024 * 1024;
        // 这个成员属性的唯一意义就是占点内存,以便能在GC日志中看清楚是否被回收过
        private byte[] bigSize = new byte[2 * _1MB];
    }
    
  • 相关阅读:
    CodeForces 58C Trees
    【转】二分匹配题集
    HDU2604 Queuing
    HDU1281 棋盘游戏
    HDU3360 National Treasures
    HDU2444 The Accomodation of Students
    HDU1498 50 years, 50 colors
    HDU1068 Girls and Boys
    【转】常用的latex宏包
    【转】网络流题集
  • 原文地址:https://www.cnblogs.com/sanjun/p/9833960.html
Copyright © 2011-2022 走看看