Abstract
在許多高階程式語言中,動態記憶體回收是一個很重要的技術。由於許多高階語言沒有提供讓使用者回收動態記憶體的功能。或是有提供,但是讓使用者手動回收動態記憶體也有可能因為使用著的疏忽造成記憶體洩漏。最後系統因為記憶體不夠而崩潰。而動態記憶體回收的設計會影響到整個系統的性能。由於目前的Dalvik虛擬機器沒辦法很精確的去辨認每個虛擬占存器裡面所儲存的資料是指標位址或者是 本篇論文著重在最佳化Google 開發的Android平台上的Dalvik虛擬機器的動態記憶體回收的功能。在本論文中,我們會先從Dalvik虛擬機器的虛擬指令集下手。 對所有不同的虛擬指令做分析以及分類。知道每一個虛擬指令的作用後,我們就可以趁虛擬機器在執行使用者的程式之前,用傳統編譯器的向後資料流分析技術, 加上所有的虛擬指令集的資訊,分析每個指令位址的占存器的資訊。 在靜態獲得這些資訊之後,我們就可以在動態時,讓Dalvik虛擬機器的動態記憶體回收器可以使用這些資訊,以便能收集更多不再被用到的記憶體。這些記憶體之後就可以充分的被利用,而不會造成記憶體洩漏的問題。