<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    饒榮慶 -- 您今天UCWEB了嗎?--http://www.ucweb.com

    3G 手機開發網

       :: 首頁 :: 聯系 :: 聚合  :: 管理
      99 Posts :: 1 Stories :: 219 Comments :: 0 Trackbacks
    http://www.3geye.net/bbs/thread-221-1-1.html 原文地址,

    自己寫的內存管理工具類,支持簡單的垃圾回收

    開發J2AVA ME 程序最需要關注的是內存的占用,開發性能高,適配多種機型的軟件不是件容易的事情,我在國慶時間整理下我的開發思路寫了這個類,給大家參考下


    package com.gggeye.util;

    import java.util.Hashtable;
    import java.util.Stack;
    import java.util.TimerTask;
    import java.util.Vector;

    import com.gggeye.demo.Logger;

     

     
     /**
      *  內存管理,工具類,主要是用于項目的內存控制,
      *  此類相對重要點,因為涉及到各個方面的內存回收
      *  此類除了提供一些常用的方法進行回收外,還還提供一個自動回收的機制,不過不建議采用,自動回收機制是是當
      *  空閑內存小于指定內存大小時候,釋放內存,回收的時間是5秒回收一次<br/>
      * 創建日期 2007-10-1
      * @author wuhua
      * <p><b>MSN </b> gggeye@hotmail.com
      * <p><b>EMAIL</b> gooogledev@gmail.com </p>
      * <p>網站支持 <a >http://www.3geye.net</a></p>
      * <p>網站論壇 <a >http://www.3geye.net/bbs</a></p>
      * <p>wuhua的博客 <a >http://wuhua.3geye.net</a></p>
      */
    public   class MemoryManager implements Runnable {
       
        /**
         * 釋放內存,當內存小于addtionMemory時候,進行垃圾回收,主動回收
         * @param addtionMemory
         */
        public final static void release(long addtionMemory) {
            long freeMemory = Runtime.getRuntime().freeMemory();
            //如果空閑的內存小于指定的內存,則回收
            if(freeMemory<=addtionMemory){
                Logger.println("回收前的內存==>" +MemoryManager.freeMemoryKByte());
                System.gc();
                Logger.println("回收后的內存==>" +MemoryManager.freeMemoryKByte());
            }
        }
       
        /**
         * 釋放指定緩存對象
         * @param addtionMemory
         * @param cache
         */
        public final static void release(long addtionMemory, Object cache){
            release(addtionMemory);
            if(cache != null){
                if(cache instanceof java.util.Hashtable){
                    Hashtable i = (Hashtable)cache;
                    i.clear();         
                }else if(cache instanceof java.util.Vector){
                    Vector i = (Vector)cache;
                    i.removeAllElements();
                }else if(cache instanceof java.util.Stack){
                    Stack i = (Stack)cache;
                    i.removeAllElements();
                }        
                cache = null;
                System.gc();
            }   
        }
       
        /**
         * 得到系統空閑內存,單位是k
         * @return 返回空閑內存的大小
         */
        public final static String freeMemoryKByte(){
            return freeMemoryByte()/1024 + "k";
        }
       
       
        public final static long  freeMemoryByte(){
            return Runtime.getRuntime().freeMemory();
        }
       
       
     

        private static MemoryManager instance ;
        private static TimerTask task;
        /**
         * 自動回收內存機制,此方法,應該在系統第一次調用的時候調用,如果重復調用則會拋出異常
         * @param time
         */
        public static void autoGC(long time) throws java.lang.RuntimeException{
            if(instance == null){
                instance  = new MemoryManager();
                task = TimerTaskManager.getInstace().create(instance, time);
            }else
                throw new RuntimeException("GC is starting...");
        }
       
        public static void colse(){
            if(instance != null) instance = null;
            if(task != null){
                task.cancel();
                task = null;
            }
           
        }

        /**
         * 實現對內存的自動化管理
         */
        public void run() {
            //小于12k內存的時候釋放內存
            release(1200000);
             
        }

    }


    爬蟲工作室 -- 專業的手機軟件開發工作室
    3G視線 -- 專注手機軟件開發
    posted on 2007-10-05 15:34 3G工作室 閱讀(1232) 評論(5)  編輯  收藏 所屬分類: j2me

    Feedback

    # re: 自己寫的內存管理工具類,支持簡單的垃圾回收 2007-10-05 17:31 BeanSoft
    很不錯, 支持了!  回復  更多評論
      

    # re: 自己寫的內存管理工具類,支持簡單的垃圾回收 2007-10-06 09:19 千里冰封
    呵呵,不錯,不過不一定能釋放得出來  回復  更多評論
      

    # re: 自己寫的內存管理工具類,支持簡單的垃圾回收[未登錄] 2007-10-06 16:26 咖啡
    好像是只是調用,但真正釋放還是考java虛擬機  回復  更多評論
      

    # re: 自己寫的內存管理工具類,支持簡單的垃圾回收 2007-10-07 12:05 爬蟲工作室
    具體可以釋放的我測試過了。在真機器也測試過?;旧现髁鞯臋C器可以做到這點,在對于開發手機軟件很需要這個東西,要不然就一下子就內存溢出  回復  更多評論
      

    # re: 自己寫的內存管理工具類,支持簡單的垃圾回收 2010-01-26 16:17 過河卒
    貌似是完成了內存的判斷與釋放提示.沒看出實際工作中使用的價值?  回復  更多評論
      

    主站蜘蛛池模板: 91成人免费福利网站在线| 亚洲视频在线精品| 男女一进一出抽搐免费视频| 亚洲日韩乱码久久久久久| 久久乐国产精品亚洲综合| 黄页网站在线看免费| 99久久成人国产精品免费 | 最近的2019免费中文字幕| 亚洲午夜无码久久| 亚洲综合亚洲国产尤物| 亚洲AV无码第一区二区三区 | 亚洲国产精品一区二区久| 国产亚洲自拍一区| 免费在线观看的黄色网址| 成全视频免费高清| 日韩免费精品视频| 成人免费视频69| 8x8x华人永久免费视频| 免费91麻豆精品国产自产在线观看 | 67pao强力打造国产免费| 国产一精品一av一免费爽爽| 暖暖免费中文在线日本| 亚洲国产精品无码第一区二区三区| 亚洲国产成AV人天堂无码| 久久青青成人亚洲精品| 亚洲欧洲无码AV电影在线观看| 亚洲国产精品日韩| 深夜国产福利99亚洲视频| 最近中文字幕免费mv视频7| 一个人看的www在线观看免费 | 亚洲AV无码一区二区二三区软件 | 亚洲成年看片在线观看| 国产精品另类激情久久久免费| 成人免费看黄20分钟| 毛片a级三毛片免费播放| 日韩亚洲国产高清免费视频| 999国内精品永久免费观看| ww4545四虎永久免费地址| 99久久免费国产香蕉麻豆| 精品国产污污免费网站aⅴ| 我们的2018在线观看免费高清 |