蘋果的成長日記

          我還是個青蘋果呀!

            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學習
          主站蜘蛛池模板: 图们市| 合江县| 桐庐县| 铁岭县| 德惠市| 巧家县| 高碑店市| 承德市| 宜黄县| 苗栗县| 乌拉特后旗| 渝北区| 留坝县| 维西| 新营市| 科技| 射阳县| 沁源县| 梅河口市| 垣曲县| 米易县| 铜鼓县| 开原市| 云南省| 文成县| 赤水市| 平陆县| 渝中区| 开原市| 荔浦县| 牙克石市| 阿克| 嫩江县| 萨嘎县| 浦东新区| 神农架林区| 吴桥县| 加查县| 商南县| 印江| 临夏市|