a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > Java垃圾回收新算法

Java垃圾回收新算法

作者: 時間:2011-05-20 來源:網絡 收藏

從誕生以來以其在網絡應用開發上獨特的魅力以及“一次開發,隨處運行”的可移植性引起了人們極大的興趣。與以往的高級語言如C/C++相比,在開發方面具有很大的優勢,其中以對象內存管理機制中的處理機制(GC)最為突出。

本文引用地址:http://www.j9360.com/article/150730.htm

  1 C/C++與對象內存管理差別

  C/C++將內存劃分成四部分:數據區、代碼區、棧區、堆區。Java則把內存劃分成三部分即代碼區、棧區、堆區,代碼區主要用于存放程序的代碼,棧區主要用于存放局部變量、內部變量等中間性變量,堆區主要用來存放對象。

  C/C++中的對象內存管理是通過語句new()/delete()或malloc()/free()進行申請和釋放的。用new()或malloc()申請內存后,若不使用delete()或free()進行釋放,則所申請的內存一直被占用,即使不使用也不能自動釋放,必須人為釋放,導致編程工作很繁瑣。

  Java中的對象內存管理則改進了對內存的釋放過程,使用new()或其他方法申請的內存在不使用時,可以自動進行處理,釋放內存,從而節省內存,使內存的使用更加高效、合理。

  Java中可以通過三種方法來銷毀對象實現內存釋放,這三種方法被稱為Java銷毀對象的三把利劍:器;finalize方法;利用System.gc方法強制啟動垃圾器。

  垃圾是一種動態存儲管理技術,它自動地釋放不再被程序引用的對象,按照特定的垃圾收集實現資源自動回收的功能系統,會自動進行GC策略。

  2 GC概述

  Java垃圾處理主要是針對堆的管理,對堆中不使用的空間進行回收處理。判斷一個對象的內存空間是否無用的標準是:如果該對象不能再被程序中任何一個“活動的部分”所引用,此時該對象的內存空間已經無用。所謂“活動的部分”,是指程序中某部分參與程序的調用,正在執行過程中,尚未執行完畢。

  具體以下兩例予以說明:

  實例1:

  int [][]matrix=new int [2][3];

  matrix=null;

  此例中,第一句是用new語句在堆中為數組申請了一個空間,然后用matrix來引用此空間的對象(這里數組可以理解為對象),此時這個內存空間就是有用的。第二句是給matrix賦空值,matrix則不再引用此數組。此時,這個空間就是無用的。

  實例2:

  int [][] m1=new int[2][3];

  int [][] m2=new int[2][3];

  m1=m2;

  此例中,第一句是用new語句在堆中為數組申請了一個空間,用m1引用這個數組。第二句是用new語句在堆中為數組申請了一個空間,用m2引用這個數組。第三句是改變引用對象,把m2的引用賦給m1,則此時m1也引用m2引用的對象數組,因此,m1原來引用的數組無人引用,成為垃圾。


上一頁 1 2 3 下一頁

關鍵詞: 算法 回收 垃圾 Java

評論


相關推薦

技術專區

關閉