Footprint 在計算機上通常指的是「Memory footprint」,就是一個程式在執行時所使用掉的主記憶體數量。這包括了所有種類的動態記憶體區塊,如代碼、靜態資料區(初始化及未初始化)、堆,和所有的堆疊一樣,外加記憶體需要額外的資料結構,例如符號表、常數表、偵錯結構、開啟檔案等,這些東西在程式執行的整個過程至少都會被載入一次以上。

大的程式會吃掉較多的記憶體,在程式語言設計中使用過多的實用程序類別和方法,將會增加 API 使用者在執行程式時的記憶體使用量,即使他們並沒有使用非標準插件或應用程式。程式本身較少有這方面的問題,而是在執行階段時產生的結構佔用掉大量的記憶體空間。例如:C++ 編譯器在程式執行過程插入許多的虛函數表、type_info 物件和臨時性不具名物件。而在一個 Java 程式裡的記憶體使用量,主要則是在 Java 虛擬平台(JVM)裡的執行階段,程式被間接載入時造成的。

從1990年開始,記憶體變得便宜許多,程式所需記憶體愈來愈多也成為很平常的事情。這樣的趨勢最主要是由於電腦軟體的普及,舉凡消耗大量記憶體空間(如資料庫)的大型企業商務應用軟體,到存取記憶體密集的多媒體創作編輯軟體,無一不是。而了應付記憶體需求日益增加的趨勢,虛擬記憶體系統就這樣產生,虛擬記憶體會在硬碟劃分一塊和實體記憶體一樣大小的區塊,將實體記憶體裡的頁框資料儲存在硬碟,以供需要時使用。

這個方法應用在那些需要消耗大量記憶體的應用程式上獲得相當程度的成功,當代多數的操作系統包括微軟的 Windows ,蘋果的Mac OS X ,和所有版本的Linux和Unix系統,都採用了這個方案,提供虛擬記憶體。

隨著智慧型電子消費產品和嵌入式系統的增加,低記憶體消耗程式再度獲得重視。低記憶體消耗程式最重要的就是要能在嵌入式平台上以佔用較少MB的記憶體來運作,而為了讓程式以較少記憶體執行以便符合可用的記憶體空間,開發商通常得犧牲掉效率,也就是執行速度。以至於昇陽公司(Sun Microsystems)也開發了一個適用於這些裝置的Java Virtual Machine (JVM)版本,它的名稱就叫做 KVM。KVM 執行於記憶體以K為單位的平台上,和那些動不動就吃掉好幾十MB(甚至是GB)的家庭用PC,形成一個對比。

資料來源 維基百科(英)  翻譯整理 / 克里西熊

arrow
arrow
    全站熱搜

    ALVIN 發表在 痞客邦 留言(0) 人氣()