`
乌鸟heart
  • 浏览: 51215 次
  • 性别: Icon_minigender_1
  • 来自: 辽宁
社区版块
存档分类
最新评论

关于Java Logger类的使用问题 - 内存不释放

    博客分类:
  • Java
阅读更多

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

 

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

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

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

 

代码如下:

 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  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. }  


调用代码:

 

 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. Log.log(Level.ALL,"some info");//此时内存增加20M  
  2. Log.close();//内存无变化,尽管加上System.GC()也没有变化  
1
4
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics