垃圾回收 GC


public class MyObject {
    private String id;

    public MyObject(String id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "MyObject{" +
                "id='" + id + '\'' +
                '}';
    }
    public void finalize() {
        System.out.println("对象回收"+id);
    }
    
}

引用类型 1.强引用
               2.软引用
               3.弱引用
               4.虚引用
输出结果

源码

public class GCTest {
    public static void main(String[] args){
      int length =5;
        //--------------创建强引用------------
        Set<MyObject> a=new HashSet<MyObject>();
        for(int i=0;i<length;i++){
           MyObject ref=new MyObject("hard_"+i);
           System.out.println("创建强引用:"+ref);
           a.add(ref);
        }
        a=null;
        //------------- 创建软引用-------------
        Set<SoftReference<MyObject>> sa=new HashSet<SoftReference<MyObject>>();
        for (int i = 0; i < length; i++) {
            SoftReference<MyObject> ref=new SoftReference<MyObject>(new MyObject("soft_"+i));
            System.out.println("创建软引用:"+ref.get());
            sa.add(ref);
        }
        System.gc();
        //------------- 创建弱引用-------------
        Set<WeakReference<MyObject>> wa=new HashSet<WeakReference<MyObject>>();
        for (int i = 0; i < length; i++) {
            WeakReference<MyObject> ref=new WeakReference<MyObject>(new MyObject("weak_"+i));
            System.out.println("创建弱引用:"+ref.get());
            wa.add(ref);
        }
        System.gc();
        //------------- 创建虚引用-------------
        ReferenceQueue<MyObject> rq=new ReferenceQueue<MyObject>();
        Set<PhantomReference<MyObject>> pa=new HashSet<PhantomReference<MyObject>>();

        for (int i = 0; i < length; i++) {
            PhantomReference<MyObject> ref=new PhantomReference<MyObject>(new MyObject("phantom_"+i),rq);
            System.out.println("创建虚引用:"+ref.get());
            pa.add(ref);
        }
        System.gc();
    }
}



Java垃圾回收(GC)与引用的种类的更多相关文章

  1. Java 垃圾回收(GC) 泛读

    Java 垃圾回收(GC) 泛读 文章地址:https://segmentfault.com/a/1190000008922319 0. 序言 带着问题去看待 垃圾回收(GC) 会比较好,一般来说主要 ...

  2. [JVM-3]Java垃圾回收(GC)机制和垃圾收集器选择

    哪些内存需要回收? 1.引用计数法 这个算法的实现是,给对象中添加一个引用计数器,每当一个地方引用这个对象时,计数器值+1:当引用失效时,计数器值-1.任何时刻计数值为0的对象就是不可能再被使用的.这 ...

  3. java垃圾回收GC

    垃圾回收时,暂停虚拟机运行 基础假设:大部分对象只存在很短的时间 对于新生代,Minor GC经常会发生 Major/Full GC会对老生代做GC 老生代GC采用Compact算法,移动形成完整的空 ...

  4. [译]Java垃圾回收是如何工作的

    说明:这篇文章来翻译来自于Javapapers 的How Java Garbage Collection Works 这部分教程是为了理解Java垃圾回收的基础以及它是如何工作的.这是垃圾回收系列教程 ...

  5. 类装饰器,元类,垃圾回收GC,内建属性、内建方法,集合,functools模块,常见模块

    '''''''''类装饰器'''class Test(): def __init__(self,func): print('---初始化---') print('func name is %s'%fu ...

  6. Java GC系列(2):Java垃圾回收是如何工作的?

    本文由 ImportNew - 伍翀 翻译自 javapapers. 目录 垃圾回收介绍 垃圾回收是如何工作的? 垃圾回收的类别 垃圾回收监视和分析 本教程是为了理解基本的Java垃圾回收以及它是如何 ...

  7. [译]GC专家系列1: 理解Java垃圾回收

    原文链接:http://www.cubrid.org/blog/dev-platform/understanding-java-garbage-collection/ 了解Java的垃圾回收(GC)原 ...

  8. Java GC专家系列1:理解Java垃圾回收

    了解Java的垃圾回收(GC)原理能给我们带来什么好处?对于软件工程师来说,满足技术好奇心可算是一个,但重要的是理解GC能帮忙我们更好的编写Java应用程序. 上面是我个人的主观的看法,但我相信熟练掌 ...

  9. 转 Java虚拟机5:Java垃圾回收(GC)机制详解

    转 Java虚拟机5:Java垃圾回收(GC)机制详解 Java虚拟机5:Java垃圾回收(GC)机制详解 哪些内存需要回收? 哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无 ...

随机推荐

  1. linux 系统常用命令

    临时性的完全关闭防火墙,可以不重启机器: #/etc/init.d/iptables status                ##查看防火墙状态 #/etc/init.d/iptable stop ...

  2. javap 可以打印出用于jni调用的java函数的签名信息

    javap可以打印出java的字节码: -c     Prints out disassembled code, i.e., the instructions that comprise the Ja ...

  3. 第二百四十八天 how can I 坚持

    无忧无虑好烦恼. 一天天的过得好可怕,太快了. 睡觉,好累. 把我的小叶元宝用棍支起来了,省得他长弯了. 还有把六神给倒了,弄了个小喷壶. 睡觉.

  4. Tengine – Nginx衍生版

    Tengine是淘宝在Nginx基础上开发的一个衍生版.官方的简介说针对大访问量网站的需求,添加了很多高级功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验. ...

  5. work-10

    0. 问题描述 见老师博客 1.架构简介 经过软件工程的课程,我将学到的很多知识应用到了这次作业中首先,我从架构上来讲解下我的这次作业. 由于各个语言优势不相同,例如在C++课上我们讲到了C++的尴尬 ...

  6. quartz 时间配置规则

    quartz 时间配置规则 格式: [秒] [分] [小时] [日] [月] [周] [年]  序号 说明  是否必填  允许填写的值 允许的通配符  1  秒  是  0-59    , - * / ...

  7. I - Control - HDU 4289 (最大流)

    题意:有N个城市,现在城市S出现了一伙歹徒,他们想运送一些炸弹到D城市,不过警方已经得到了线报知道他们的事情,不过警察不知道他们所在的具体位置,所以只能采取封锁城市的办法来阻断暴徒,不过封锁城市是需要 ...

  8. javascript中对象的每个实例都具有的属性和方法

  9. Codeforces Round #349 (Div. 2) D. World Tour (最短路)

    题目链接:http://codeforces.com/contest/667/problem/D 给你一个有向图,dis[i][j]表示i到j的最短路,让你求dis[u][i] + dis[i][j] ...

  10. ssh使用ajax异步通讯. json与对象转换的几个小问题

    首先是hibernate,用ssh做项目的时候,使用hibernate,这个hibernate博大精深,至今只懂皮毛.建对象时候使用它的一对多,多对多联系,. 这样子,对象转json的时候会产生循环依 ...