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)  編輯  收藏 所屬分類: 隨筆

          主站蜘蛛池模板: 高淳县| 龙井市| 连州市| 上饶市| 崇义县| 新绛县| 壤塘县| 高密市| 尉犁县| 文成县| 普定县| 吉木乃县| 淮滨县| 喀什市| 平遥县| 河西区| 南陵县| 洪雅县| 宾川县| 横山县| 绥阳县| 永年县| 乐平市| 钟祥市| 闸北区| 岳西县| 洛浦县| 临泽县| 潮安县| 桦甸市| 罗江县| 莆田市| 双流县| 讷河市| 镇远县| 东山县| 简阳市| 秦安县| 定襄县| 濮阳市| 江口县|