tbwshc

          Java內存管理優化筆記

          1. 垃圾回收
            JVM運行環境中垃圾對象的定義:
            一個對象創建后被放置在JVM的堆內存(heap)中,當永遠不再引用這個對象時,它將被JVM在堆內存(heap)中回收。被創建的對象不能再生,同時也沒法通過程序語句釋放它們。
            不可到達的對象被JVM視為垃圾對象,JVM將給這些對象打上標記,然后清掃回收它們,并將散碎的內存單元收集整合。
            JVM管理的兩種類型的內存:
            堆內存(heap),主要存儲程序在運行時創建或實例化的對象與變量。
            棧內存(stack),主要存儲程序代碼中聲明為靜態(static)(或非靜態)的方法。
            堆內存(heap)通常情況下被分為兩個區域:新對象(new object)區域與老對象(old object)區域。
            新對象區域:
            又可細分為Eden區域、From區域與To區域。
            Eden區域保存新創建的對象。當該區域中的對象滿了后,JVM系統將做可達性測試,主要任務是檢測有哪些對象由根集合出發是不可到達的,這些對象就可被JVM回收,且將所有的活動對象從Eden區域拷到To區域,此時有一些對象將發生狀態交換,有的對象就從To區域被轉移到From區域,此時From區域就有了對象。
            該過程執行期間,JVM的性能非常低下,會嚴重影響到正在運行的應用的性能。
            老對象區域:
            在老對象區域中的對象仍有一個較長的生命周期。經過一段時間后,被轉入tb老對象區域的對象就變成了垃圾對象,此時它們被打上相應的標記,JVM將自動回收它們。
            建議不要頻繁強制系統做垃圾回收,因為JVM會利用有限的系統資源,優先完成垃圾回收工作,致使應用無法快速響應來自用戶端的請求,這樣會影響系統的整體性能。
            2. JVM中對象的生命周期
            對象的整個生命周期大致分為7個階段:創建(creation)、應用(using)、不可視(invisible)、不可到達(unreachable)、可收集(collected)、終結(finalized)、釋放(free)。
            1) 創建階段
            系統通過下面步驟,完成對象的創建:
            a) 為對象分配存儲空間
            b) 開始構造對象
            c) 遞歸調用其超類的構造方法
            d) 進行對象實例初始化與變量初始化
            e) 執行構造方法體
            在創建對象時的幾個關鍵應用規則:
            避免在循環體中創建對象,即使該對象占用內存空間不大
            盡量及時使對象符合垃圾回收標準
            不要采用過深的繼承層次
            訪問本地變量優于訪問類中的變量

          posted on 2013-06-28 16:59 chen11-1 閱讀(245) 評論(0)  編輯  收藏 所屬分類: 隨筆

          主站蜘蛛池模板: 大名县| 屏南县| 闽侯县| 麦盖提县| 高邑县| 保定市| 开平市| 大宁县| 霍山县| 余庆县| 怀来县| 沁源县| 利津县| 玉山县| 南阳市| 蓬莱市| 泰兴市| 图们市| 锦州市| 柳河县| 秭归县| 顺昌县| 巴楚县| 忻城县| 庆元县| 凉山| 安多县| 临沂市| 澎湖县| 义马市| 鄂尔多斯市| 康平县| 青神县| 穆棱市| 万宁市| 祥云县| 临猗县| 文成县| 长泰县| 霞浦县| 社旗县|