• Java内存释放——《Thinking in Java》随笔004


     1 package cn.skyfffire;
     2 
     3 /**
     4  * 
     5  * @author skyfffire
     6  *
     7  */
     8 public class Test {
     9     static boolean gcrun = false;        // GC是垃圾回收器
    10     static boolean f = false;            // 终止创建对象的条件
    11     static int created = 0;                // 对象个数计数器
    12     static int finalized = 0;            // 对象销毁
    13     int i;
    14     
    15     Test() {
    16         i = ++created;
    17         
    18         if (created == 47) {
    19             System.out.println("已经达到47个");
    20         }
    21     }
    22     
    23     protected void finalize() {
    24         if (!gcrun) {
    25             gcrun = true;
    26             
    27             System.out.println(created + "号对象创建完毕");
    28         }
    29         
    30         if (i >= 47) {
    31             System.out.println("47以上了");
    32             
    33             f = true;
    34         }
    35         
    36         finalized++;
    37         
    38         if (finalized >= created) {
    39             System.out.println("所有对象销毁完毕");
    40         }
    41     }
    42 }
    43 
    44 class Garbage {
    45     public static void main(String[] args) {
    46         if (args.length == 0) {
    47             System.err.println("请加上参数");
    48             
    49             return;
    50         }
    51         
    52         while (!Test.f) {
    53             new Test();
    54         }
    55         
    56         System.out.println(Test.created + "---" + Test.finalized);
    57         
    58         if (args[0].equals("before")) {
    59             System.out.println("gc");
    60             System.gc();
    61             System.out.println("runFinalization():");
    62             System.runFinalization();
    63         }
    64 //        
    65 //        if (args[0].equals("after")) {
    66 ////            System.runFinalizersOnExit(false);
    67 //        }
    68     }
    69 }
  • 相关阅读:
    再谈H2的MVStore与MVMap
    log4j动态日志级别调整
    wireshark抓文件上传的包的结果记录
    struts2对properties资源的处理
    Spring core resourc层结构体系及JDK与Spring对classpath中资源的获取方式及结果对比
    [工具使用] visualvm 通过jmx不能连接
    oracle 安装 启动listener 建库相关
    vscode
    XSSFWorkbook
    TearmQuery()
  • 原文地址:https://www.cnblogs.com/skyfffire/p/6444367.html
Copyright © 2020-2023  润新知