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

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

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

    java內存管理的8個小技巧

    1.         盡量使用直接量

    這個大家應該清楚,所以只做簡訴:
    String str = "hello";
    上面這種方式會創建一個“hello”字符串,而且JVM的字符緩存池還會緩存這個字符串;
    String str = new String("hello");
    此時程序除創建字符串外,str所引用的String對象底層還包含一個char[]數組,這個char[]數組依次存放了h,e,l,l,o

    2.         使用StringBuilder和StringBuffer進行字符串連接

    這個我就不多講了,用String做連接時會生成大量臨時字符串

    3.         盡早釋放無用對象的引用

    大部分時,方法局部引用變量所引用的對象 會隨著方法結束而變成垃圾,因此,大部分時候程序無需將局部,引用變量顯式設為null。

             例如:

             Public void test(){

                       Object obj = new Object();

                       ……

                       Obj=null;

    }

    上面這個就沒必要了,隨著方法test()的執行完成,程序中obj引用變量的作用域就結束了。但是如果是改成下面:

    Public void test(){

                       Object obj = new Object();

                       ……

                       Obj=null;

                       //執行耗時,耗內存操作;或調用耗時,耗內存的方法

                       ……

    }

    這時候就有必要將obj賦值為null,可以盡早的釋放對Object對象的引用。

    4.         盡量少用靜態變量

    當某個對象被static變量所引用,那么GC通常是不會回收這個對象所占的內存。如下:

    Class Person{

             static Object obj = new Object();

    }

    對于上面的對象而言,obj變量的生命周期與Person類同步,在其不被卸載的情況下,其對應的Class對象會常駐內存,知道程序結束。

    5.         避免在經常調用的方法、循環中創建java對象

    6.         緩存經常使用的對象

    這里首先說一個實現緩存時常有的兩種方式:

    使用HashMap進行緩存

    直接使用某些開源的緩存項目

    如果是第一種,程序員需要手動控制HashMap容器里key-value對不至于太多,從而導致其占用過大的內存,致使系統性能下降。

    而第二種多使用一些緩存算法,提高系統運行效率,例如OSCache,Ehcache等,它們大都實現了FIFO\MRU等常見的緩存算法。

    7.         盡量不要使用finalize方法

    實際上,將資源清理放在finalize方法中完成是非常不好的選擇,由于GC的工作量很大,尤其是回收Young代內存時,大都會引起應用程序暫停,所以再選擇使用finalize方法進行資源清理,會導致GC負擔更大,程序運行效率更差。

    8.         考慮使用SoftReference

    當程序需要創建長度很大的數組時,可以考慮使用SoftReference來包裝數組元素

    SoftReference是個很好的選擇,當內存足夠時,它的功能等同于普通引用,當內存不足時,它會犧牲自己,釋放軟引用所引用的對象。例如創建一個長度為100000Person數組。

    注意:在使用軟引用來引用對象時不要忘記軟引用的不確定性,程序通過軟引用所獲取的對象有可能為null(內存緊張時)。所以當應用程序取出SoftReference所引用的java對象之后,應該顯式判斷該對象死后為null,為null時,應該重建對象。

    總結:這只是在學習過程中的一些筆記,希望大家多溝通,共同進步

    posted on 2011-07-19 12:27 朝陽zzz 閱讀(361) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2011年7月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    導航

    統計

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 女bbbbxxxx另类亚洲| 亚洲国产精品国自产电影| 日韩一级免费视频| 成人黄软件网18免费下载成人黄18免费视频 | 免费a级毛片无码a∨性按摩| 免费看片免费播放| 日本成人免费在线| 亚洲国产精品无码久久一线| 精品久久久久久久免费加勒比| a级在线免费观看| 国产免费一区二区视频| 久久久精品午夜免费不卡| 免费观看久久精彩视频| 99re这里有免费视频精品| 1000部拍拍拍18勿入免费视频软件 | 一个人免费视频观看在线www| 国产高清不卡免费视频| 五月亭亭免费高清在线| www.黄色免费网站| 国产美女做a免费视频软件| 免费吃奶摸下激烈视频| 国产亚洲精品资在线| 亚洲日本中文字幕| 亚洲av成人综合网| 校园亚洲春色另类小说合集| 亚洲精品偷拍视频免费观看| 久草视频在线免费看| 青青青免费国产在线视频小草| 成人性生交视频免费观看| 亚洲精品国产V片在线观看 | 国产色爽免费视频| jlzzjlzz亚洲乱熟在线播放| 久久精品国产99精品国产亚洲性色 | 亚洲国产精品免费观看| 日本免费人成视频播放| 国产亚洲美日韩AV中文字幕无码成人| 亚洲AV日韩AV永久无码绿巨人| 精品亚洲成A人无码成A在线观看| 国产午夜亚洲精品不卡免下载 | 色多多A级毛片免费看| 精品国产免费一区二区三区香蕉 |