• 关于Java Logger类的使用问题


    原文地址:http://www.ihuxu.com/p/236.html

     

    说明:这是一个利用Java Logger类的示例,完成简单的日志记录功能。代码中有部分类库没有说明,但不影响阅读。

    本人技术是新手,对于java的内存问题有着很大的困惑。希望得到网友的指点,问题描述如下:

    本人写了一个日志类Log,当加载Log类后,内存会增长20M左右,但是等释放了所有内存变量时,观察内存情况,并没有释放这个20M的迹象。诸如此类的问题还有很多,虽然Java有GC,不用显示释放内存。但是,确实不知道或者观察不到内存的释放过程。

    代码如下:

     1 package tools;
     2  
     3 import java.io.IOException;
     4 import java.util.logging.FileHandler;
     5 import java.util.logging.Level;
     6 import java.util.logging.Logger;
     7  
     8 public class Log {
     9  
    10     private static Logger l;
    11     private static FileHandler fh;
    12      
    13     /**
    14      * 构造函数
    15      * 
    16      * @since alpha 0.0.1
    17      * 
    18      */
    19     private Log() {
    20         try {
    21             Log.l = Logger.getLogger(Config.GLOBAL_LOGGER_NAME);
    22             Log.fh = new FileHandler(Config.LOG_FILE_NAME,true);
    23             Log.l.addHandler(Log.fh);
    24             Log.l.setLevel(Level.ALL);
    25         } catch (SecurityException e) {
    26             e.printStackTrace();
    27         } catch (IOException e) {
    28             e.printStackTrace();
    29         }
    30     }
    31      
    32     /**
    33      * 获取单利 - 单利模式
    34      * 
    35      * @return Logger
    36      * @since alpha 0.0.1
    37      * 
    38      */
    39     private static Logger getInstance() {
    40          
    41         if( Log.l == null ) {
    42             new Log();
    43         }
    44          
    45         return Log.l;
    46     }
    47      
    48     /**
    49      * log
    50      * 
    51      * @param l
    52      * @param str
    53      * @since alpha 0.0.1
    54      * 
    55      */
    56     public static void log(Level l, String str) {
    57         Logger logger = Log.getInstance();
    58         logger.log(l,str);
    59     }
    60      
    61     public static void flush() {
    62         Log.fh.flush();
    63     }
    64      
    65     public static void close() {
    66         if( Log.l != null ) {
    67             Log.l = null;
    68         }
    69         if( Log.fh != null ) {
    70             Log.fh.flush();
    71             Log.fh.close();
    72             Log.fh = null;
    73         }
    74     }
    75      
    76 }


    调用代码:

    1 Log.log(Level.ALL,"some info");//此时内存增加20M
    2 Log.close();//内存无变化,尽管加上System.GC()也没有变化
  • 相关阅读:
    CodeForces 288A Polo the Penguin and Strings (水题)
    CodeForces 289B Polo the Penguin and Matrix (数学,中位数)
    CodeForces 289A Polo the Penguin and Segments (水题)
    CodeForces 540C Ice Cave (BFS)
    网站后台模板
    雅图CAD
    mbps
    WCF学习-协议绑定
    数据库建表经验总结
    资源位置
  • 原文地址:https://www.cnblogs.com/wuniaoheart/p/3601679.html
Copyright © 2020-2023  润新知