zoukankan      html  css  js  c++  java
  • 关于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()也没有变化
  • 相关阅读:
    idea 快捷键ctrl+shift+f失效的解决方案
    Nacos2.0启动遇到的问题以及解决方法(自测有效)
    Nacos客户端升级到2.x版本后,启动出现9848端口错误解决
    用友Co 与直接插库速度比较
    CSS text-decoration_下划线
    uni-app组件之image
    JavaScript :Array数组之filter()——检查指定数组符合条件的所有元素
    爬虫与Python:(三)基本库的使用——2.网络请求库之request安装
    爬虫与Python:(三)基本库的使用——1.网络请求库之urllib()
    Python报错:TypeError: string argument without an encoding
  • 原文地址:https://www.cnblogs.com/wuniaoheart/p/3601679.html
Copyright © 2011-2022 走看看