zoukankan      html  css  js  c++  java
  • 六、垃圾回收_判断对象是否存活算法_引用计数法详解

    引用计数法:

      在对象中添加一个引用计数器,当有地方引用对象的时候,引用计数器的值就+1 ,当引用失效的时候计数器的值就 -1 

        

    打印垃圾回收的参数

      -verbose:gc

      -XX: +PrintGCDetail

    使用程序模拟下图的  对象引用来测试  jdk 1.8 使用的是否是    引用计数法

    package com.zuoyan.test01;
    
    public class Main {
    
        private Object instance;
    
        private Main()
        {
            byte[] m = new byte[20*1024*1024];
        }
    
        public static void main(String[] args) {
    
            Main m1 = new Main();
            Main m2 = new Main();
            m1.instance = m2;
            m2.instance = m1;
    
    
            m1 = null;
            m2 = null;
    
            System.gc();
    
        }
    }

    m1 引用 m2  ,m2 引用 m1  将 m1 和 m2 对堆内存的引用置为空,然后进行垃圾回收,判断 m1 m2是否被回收

    [GC (System.gc()) [PSYoungGen: 46203K->808K(76288K)] 46203K->816K(251392K), 0.0013100 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
    [Full GC (System.gc()) [PSYoungGen: 808K->0K(76288K)] [ParOldGen: 8K->661K(175104K)] 816K->661K(251392K), [Metaspace: 3477K->3477K(1056768K)], 0.0050335 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
    Heap
     PSYoungGen      total 76288K, used 655K [0x000000076b100000, 0x0000000770600000, 0x00000007c0000000)
      eden space 65536K, 1% used [0x000000076b100000,0x000000076b1a3ee8,0x000000076f100000)
      from space 10752K, 0% used [0x000000076f100000,0x000000076f100000,0x000000076fb80000)
      to   space 10752K, 0% used [0x000000076fb80000,0x000000076fb80000,0x0000000770600000)
     ParOldGen       total 175104K, used 661K [0x00000006c1200000, 0x00000006cbd00000, 0x000000076b100000)
      object space 175104K, 0% used [0x00000006c1200000,0x00000006c12a5498,0x00000006cbd00000)
     Metaspace       used 3484K, capacity 4496K, committed 4864K, reserved 1056768K
      class space    used 385K, capacity 388K, committed 512K, reserved 1048576K

    可以看到  下面的结果,每个对象的构造方法创建的byte  就创建了2M左右的数据,但是经过垃圾收集过后,剩余 808k 证明两个对象都被回收了,   JDK 1.8 使用的是 parallel

    46203K->808K(76288K)]


    IDEA 配置JVM 参数的地址



  • 相关阅读:
    Known Notation括号匹配类问题(2014年ACM/ICPC 亚洲区域赛牡丹江)
    01串LIS(固定串思维)--Kirk and a Binary String (hard version)---Codeforces Round #581 (Div. 2)
    大学生究竟哪种姿势查成绩
    让你的手机缓存视频在电脑上播放
    亲,你的多功能工具箱到了,麻烦签收一下
    真WIFI密码查看器
    爱剪辑永久vip版爱要不要
    这两款ios和Android的免费影视神器最近火爆了
    全球免费直播软件爱要不要
    一次性给你上万款黑科技软件,留着自己悄悄用吧。
  • 原文地址:https://www.cnblogs.com/kangxinxin/p/11384049.html
Copyright © 2011-2022 走看看