蘋果的成長日記

          我還是個青蘋果呀!

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            57 隨筆 :: 0 文章 :: 74 評論 :: 0 Trackbacks
          垃圾收集的意義

          在c中,對象所占的內存在程序結束運行之前一直被占用,在明確釋放之前不能分配給其它對象;而在Java中,當沒有對象引用指向原先分配給某個對象的內存時,該內存便成為垃圾。Jvm的一個系統級線程會自動釋放該內存塊。垃圾收集意味著程序不再需要的對象是無用信息,這些信息將被丟棄。當一個對象不再被引用的時候,內存回收它占領的空間,以便空間被后來的新對象使用。事實上,除了釋放沒用的對象,垃圾收集也可以清除內存記錄碎片。由于創建對象和垃圾收集器釋放丟棄對象所占的內存空間,內存會出現碎片。碎片是分配給對象的內存塊之間的空閑內存洞。碎片整理將所占用的堆內存移到堆的一端,Jvm將整理出的內存分配給新的對象。

          垃圾收集能自動釋放內存空間,減輕編程的負擔。這使Java虛擬機具有一些優點。首先,它能使編程效率提高。在沒有垃圾收集機制的時候,可能要花許多時間來解決一個難懂的存儲器問題。在用Java語言編程的時候,靠垃圾收集機制可大大縮短時間。其次是它保護程序的完整性, 垃圾收集是Java語言安全性策略的一個重要部份。

          垃圾收集的一個潛在的缺點是它的開銷影響程序性能Java虛擬機必須追蹤運行程序中有用的對象,而且最終釋放沒用的對象。這一個過程需要花費處理器的時間。其次垃圾收集算法的不完備性,早先采用的某些垃圾收集算法就不能保證100%收集到所有的廢棄內存。當然隨著垃圾收集算法的不斷改進以及軟硬件運行效率的不斷提升,這些問題都可以迎刃而解。
          posted on 2005-06-24 15:20 蘋果 閱讀(324) 評論(0)  編輯  收藏 所屬分類: J2EE/JAVA學習
          主站蜘蛛池模板: 阜阳市| 张家港市| 文安县| 南阳市| 瑞安市| 密云县| 武宣县| 柯坪县| 凌源市| 固始县| 鲁甸县| 延长县| 玉屏| 长春市| 军事| 桦甸市| 珲春市| 团风县| 景德镇市| 七台河市| 宁波市| 西青区| 荃湾区| 昂仁县| 凌云县| 那坡县| 嵊泗县| 霍城县| 略阳县| 清丰县| 屯留县| 天水市| 邹平县| 张掖市| 泰来县| 福州市| 潜江市| 巴中市| 府谷县| 平山县| 湖州市|