TW201301029A - 具有增強型應用程式元資料之記憶體管理器 - Google Patents

具有增強型應用程式元資料之記憶體管理器 Download PDF

Info

Publication number
TW201301029A
TW201301029A TW101114221A TW101114221A TW201301029A TW 201301029 A TW201301029 A TW 201301029A TW 101114221 A TW101114221 A TW 101114221A TW 101114221 A TW101114221 A TW 101114221A TW 201301029 A TW201301029 A TW 201301029A
Authority
TW
Taiwan
Prior art keywords
memory
application
host
allocation
request
Prior art date
Application number
TW101114221A
Other languages
English (en)
Inventor
Steven Maillet
Michael Hall
James Larus
Jeremiah C Spradlin
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of TW201301029A publication Critical patent/TW201301029A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Memory System (AREA)

Abstract

本文描述一種記憶體管理系統,該記憶體管理系統自應用程式接收描述正如何使用記憶體之資訊,且該記憶體管理系統允許應用程式主機對請求使用記憶體之應用程式施加更多控制。系統提供應用程式記憶體管理應用程式介面(API),該應用程式記憶體管理API允許應用程式指定關於記憶體分配之更多資訊,該資訊有助於隨後管理記憶體。系統亦提供靜態地及/或動態地分析舊有應用程式之能力,以給予未經修正以與系統一起工作的應用程式一些參與更有效的記憶體管理之能力。系統提供應用程式主機變化,以有效利用由應用程式提供的資訊且使用資訊來更有效地管理記憶體,且該系統掛鉤至應用程式之記憶體使用中。因此,系統提供用於管理記憶體之新模型,該新模型改良應用程式主機行為且允許應用程式更有效率地使用計算資源。

Description

具有增強型應用程式元資料之記憶體管理器
本發明係關於具有增強型應用程式元資料之記憶體管理器。
電腦系統中之記憶體管理是指多個應用程式及作業系統對記憶體之使用達成一致的方式。儘管每一電腦系統具有固定量之實體隨機存取記憶體(RAM)或其他記憶體,但作業系統可向應用程式及向作業系統組件提供虛擬記憶體,該虛擬記憶體表示不同於實體記憶體的記憶體之大小。在一些情況下,虛擬記憶體允許作業系統將每一應用程式限制於存取記憶體之特定部分,以防止一個應用程式藉由意外地或故意地修正另一應用程式之記憶體來干擾另一應用程式之操作。作業系統大體提供用於回應於應用程式及作業系統組件請求而分配及釋放記憶體之一或更多個函數。作業系統可向應用程式提供記憶體集用場,該應用程式可自該記憶體集用場分配記憶體塊。若應用程式使用比經安裝實體記憶體之量更多的虛擬記憶體,或應用程式之群組一起使用比經安裝實體記憶體之量更多的虛擬記憶體,則作業系統可使用較慢的基於碟片之儲存器,以在稱為分頁或碟片調換(亦即,將記憶體之頁儲存且擷取至碟片)之過程中經由調換檔延伸記憶體之視大小。
除了所提供的分配及釋放函數以外,作業系統幾乎看不到應用程式如何使用記憶體。許多計算裝置含有圍繞記憶體之特定限制。舉例而言,行動計算裝置可包括比通常在桌上型電腦系統上可用的記憶體之量小得多的記憶體之量(或系統可能想要給一些記憶體降低功率以降低能量消耗),從而產生對於裝置與多少應用程式可同時執行、每一應用程式可請求/消耗多少記憶體等等有關的限制。在特定計算系統內代管應用程式碼之其他計算環境亦可對環境之記憶體使用率強加限制或上限。諸如VMware及MICROSOFT TM Virtual PC之主機、超管理器、作業系統及其他可被指定有限資源。在所有此等情形下,有效的記憶體管理變得更值得注意。
新計算平臺已引入新技術或改變意圖之舊技術,以解決在應用程式之間共享的有限記憶體之問題。舉例而言,行動電話作業系統可產生每一應用程式之記憶體快照,以使得當應用程式不處於前臺(例如,被有效地使用)中時,作業系統關閉該應用程式且在較慢儲存器(例如,快閃記憶體或其他儲存器)上儲存應用程式之記憶體之映射。當選定應用程式時,作業系統將所儲存映射重新載入至記憶體中且啟動應用程式。應用程式可能甚至未察覺到該應用程式曾經被關閉。儘管此等技術是有幫助的,但作業系統仍經受應用程式對於使用記憶體之不透明的請求。當前作出的關於動態記憶體使用率之大部分決策係基於在執行時間期間發現的資訊作出。此資 訊之實例包括對經分配記憶體區段的引用之大小及數目。此資訊隨後可用以決定哪些分配將被分頁至碟片、被快取至高效能記憶體或藉由某種自動記憶體管理系統釋放。令人遺憾的是,任何平臺因潛在多年之舊有應用程式而受限,因此在如記憶體管理一樣廣泛的區域中採用新模型十分困難。
本文描述一種記憶體管理系統,該記憶體管理系統自應用程式接收描述記憶體正如何使用之資訊,且該記憶體管理系統允許應用程式主機對請求使用記憶體之應用程式施加更多控制。現今,除應用程式已發出多少記憶體請求及藉由每一請求已請求多大大小之記憶體之外,應用程式主機幾乎不瞭解應用程式之記憶體使用。然而,應用程式主機不知道每一記憶體分配之目的、很快將使用哪些記憶體分配、若應用程式主機需要更多記憶體則可容易地再產生哪些記憶體分配、暫時將不使用哪些記憶體分配且因此該等記憶體分配可分頁至碟片而不影響應用程式之執行等等。令人遺憾的是,儘管應用程式主機的任務為作出此等類型之決策,但應用程式擁有關於有效地作出此等決策之大部分資訊。
記憶體管理系統以若干方式克服此等問題。第一,系統提供應用程式記憶體管理應用程式介面(application-programming interface;API),該應用程式記 憶體管理API允許應用程式指定關於記憶體分配之更多資訊,該資訊有助於隨後管理記憶體。API亦可提供應用程式主機通知應用程式何時需要記憶體的能力及主動釋放且按需要再產生記憶體分配而無應用程式之互動的能力。第二,系統提供靜態地及/或動態地分析舊有應用程式之能力,以給予未經修正以與系統一起工作的應用程式一些參與更有效的記憶體管理之能力。第三,系統提供應用程式主機變化,以有效利用由應用程式提供的資訊且使用該資訊來更有效地管理記憶體,且系統掛鉤至應用程式之記憶體使用中。因此,記憶體管理系統提供用於管理記憶體之新模型,該新模型改良應用程式主機行為且潛在地允許應用程式更有效率地使用計算資源。
提供此發明內容以用簡化形式介紹下文在實施方式中進一步描述之概念選擇。此發明內容並不意欲識別所主張標的之關鍵特徵或基本特徵,亦不意欲用以限制所主張標的之範疇。
本文描述一種記憶體管理系統,該記憶體管理系統自應用程式接收描述記憶體正如何使用之資訊,且該記憶體管理系統允許應用程式主機對請求使用記憶體之應用程式施加更多控制。現今,除應用程式已發出多少記憶體請求及每一請求已請求多大大小之記憶體之外,應用 程式主機幾乎不瞭解應用程式之記憶體使用。然而,應用程式主機不知道每一記憶體分配之目的、很快將使用哪些記憶體分配、若應用程式主機需要更多記憶體則可容易地再產生哪些記憶體分配、暫時將不使用哪些記憶體分配且因此該等記憶體分配可分頁至碟片而不影響應用程式之執行等等。令人遺憾的是,儘管應用程式主機的任務為作出此等類型之決策,但應用程式擁有關於有效地作出此等決策之大部分資訊。現今藉由應用程式主機提供功能性之基本位準且猜測將採取哪些動作來解決此衝突。在許多情況下,應用程式主機可恰好在應用程式需要記憶體之前將記憶體分頁至碟片,或應用程式主機可耗費大量努力來管理對於應用程式幾乎不重要的記憶體。
記憶體管理系統以本文進一步論述的若干方式克服此等問題。第一,系統提供應用程式記憶體管理應用程式介面(API),該應用程式記憶體管理API允許應用程式指定關於記憶體分配之更多資訊,該資訊有助於隨後管理記憶體。API亦可提供應用程式主機通知應用程式何時需要記憶體的能力及主動釋放且按需要再產生記憶體分配而無應用程式之互動的能力。第二,系統提供靜態地及/或動態地分析舊有應用程式之能力,以給予未經修正以與系統一起工作的應用程式一些參與更有效的記憶體管理之能力。第三,系統提供核心位準作業系統(或主機)變化,以有效利用由應用程式提供的資訊且使用該 資訊來更有效地管理記憶體,且系統掛鉤至應用程式之記憶體使用中。因此,記憶體管理系統提供用於管理記憶體之新模型,該新模型改良應用程式主機行為且潛在地允許應用程式更有效率地使用計算資源。本文所述之應用程式主機可指作業系統,該作業系統執行應用程式或另一類型之主機(例如,本身在作業系統或虛擬化子系統上執行的應用程式),該應用程式或另一類型之主機係諸如,由SILVERLIGHT TM,.NET提供的執行時間、原Win32主機或由VMware及Virtual PC提供的其他主機或虛擬機器。在以下章節中進一步詳細描述上文介紹的三個區域中之每一區域。
經修正應用程式
在許多情況下,對於軟體開發者而言修正軟體應用程式以與記憶體管理系統互動是有可能的。對於經有效開發的應用程式而言,軟體開發者可選擇採用記憶體管理系統以獲得記憶體管理系統提供之益處,或軟體開發者可由特定平臺委任,在該特定平臺上,應用程式操作以採用記憶體管理系統。在許多情況下,應用程式可保持應用程式不可能使用之經分配記憶體。舉例而言,當使用者自應用程式之使用者介面之一個部分轉移至另一部分時,則應用程式可一直保持來自先前介面之資訊於附近,以防使用者再訪彼介面。現今,此記憶體對主機而言被需要的程度恰如其他有效使用之記憶體。記憶體管理系統為應用程式提供通知主機如此等之情形的方式, 以便可將此記憶體去優先化。作為回應,主機可選擇此記憶體作為用於分頁之良好候選者或作出其他記憶體管理決策,該等其他記憶體管理決策由於添加的來自應用程式之資訊而更有效率。
在一些實施例中,記憶體管理系統提供應用程式化模型或框架,該應用程式化模型或框架使得記憶體管理器能夠作出關於最佳化在執行時間期間記憶體使用率之智慧型決策。此舉藉由利用應用程式化模型/框架來完成,該應用程式化模型/框架接收元資料與動作兩者,該等動作用以分配及填充為應用程式所請求的任何給定記憶體物件指定的記憶體分配。元資料提供應用程式想要傳輸至主機的資訊,該資訊描述記憶體分配之本質或目的,諸如,記憶體之優先級、正被分配的記憶體之數量、從頭再產生記憶體之內容的容易性(例如,內容可自檔案載入或可藉由演算法計算)、存取頻率、多久應用程式可使用記憶體等等。用以分配且填充記憶體之動作可向主機提供足夠的資訊,以能夠在應用程式之請求之後釋放且隨後再產生經釋放記憶體。藉由允許開發者指定元資料及用以填充記憶體之動作,記憶體管理系統可最佳化與由應用程式指定的所要使用率一致的記憶體使用率。
由記憶體管理系統向應用程式提供的API為應用程式開發者提供構件以經由應用程式框架或程式化模型指定元資料,該元資料描述記憶體分配之使用率。此外,API允許應用程式框架委任開發者利用標準手段經由熟知的 函數填充或修正記憶體。此舉允許記憶體管理系統出於效能原因伺機填充記憶體,或出於其他目的在低記憶體可用性之時期期間(亦即,當釋放記憶體之機會成本大於隨後再分配且再填充記憶體之成本時)釋放記憶體。
最佳化記憶體使用率可涵蓋此項技術中已知的許多技術,但最佳化記憶體使用率通常將意謂對於效能或者大小之最佳化。在效能之情況下,最佳化可能意謂若可獲得實現至今不需要的記憶體分配之手段,則允許至今不需要的記憶體分配發生。若當前CPU使用率較低且應用程式為閒置的,則此舉可能是理想的。在一些情況下,應用程式對分配記憶體的請求可變為主機儲存用於未來參考之註解,而在當時並不分配任何記憶體。隨後,當應用程式經由API請求使用記憶體時,或當主機決定適合的時間來實現該請求時,記憶體管理系統實際上分配所請求的記憶體。在大小的情況下,最佳化可能意謂減少記憶體佔據面積或基於當前經分配記憶體及未來記憶體需要作出決策。
應用程式與主機之間的實際介面可採取將由一般技術者辨識的各種形式。舉例而言,應用程式可針對每一類型之分配提供分配函數且可在分配請求中將對分配的指標或引用傳遞至主機。當主機準備執行分配時,主機調用所提供的分配函數,且應用程式使用常規記憶體分配函數產生記憶體。類似地,應用程式可傳遞對其他函數的引用,以便主機可請求釋放記憶體、移動記憶體、將 記憶體內容切換至不同類型之儲存器等等。當應用程式自作業系統請求記憶體時,相同概念亦可用於分配,作業系統可基於若干因素延遲分配。當作業系統準備分配時,返回調用函數引用(藉由經分配記憶體)或者發生事件(或相似機制)。介面亦可接收元資料,諸如,記憶體大小(該記憶體大小可不同於經請求大小)、優先級、快取偏好、分頁能力、如何填充記憶體、對記憶體的相依性或引用、是否更新記憶體等等。在一些實施例中,系統提供記憶體介面類別,分配自該記憶體介面類別導出,以定義每一類型之記憶體分配。類別可包括用於擷取應用程式指定的分配函數之GetPointer函數或用於擷取執行其他記憶體處置任務的函數之其他GetX函數。替代性地或此外,應用程式可以傳統方式進行分配且隨後調用RegisterPointer函數,該等RegisterPointer函數將經分配記憶體註冊給主機且指定本文所述之額外資訊以與經分配記憶體相關聯。以下偽碼提供應用程式可使用的一個記憶體類別之實例。
替代性地或此外,開發者可使用源注釋語言(source annotation language;SAL)或其他標記將本文所述之框架引入至應用程式碼中,以識別現有記憶體分配且指定額外參數及與每一分配、存取或其他記憶體互動有關之元資料。
在一些實施例中,記憶體管理系統可在單一應用程式內操作且不與核心或其他主機共享。應用程式可受益於經改良記憶體管理,該應用程式自身的內部記憶體管理器可藉由使用本文所述之框架用所提供的額外資訊來執行該經改良記憶體管理。在一些情況下,主機隨後可提供註冊函數,該應用程式可調用該註冊函數,以獲得跨應用程式的益處且允許主機亦使用定義明確的記憶體分配及使用率。作為實例,系統可在有毒軟體掃描之前通知應用程式,以便應用程式可卸載任何不太有關的記憶體,以加速掃描。作為另一實例,應用程式可在CPU進入閒置狀態之前預佔性地分配記憶體,以便當使用者執行一些操作且CPU繼續執行時,應用程式可迅速地回應事件(增強對功率狀態改變的回應)。
未修正應用程式
在軟體開發者不可能修正軟體應用程式以與記憶體管 理系統互動的情況下,或在實施系統以與未修正應用程式(亦即,未經特定設計以與系統一起工作的應用程式)操作的情況下,系統仍可能提供記憶體管理益處。為此,系統收集描述應用程式如何使用記憶體本身之資訊(例如,基於靜態分析及/或側描應用程式-使應用程式執行、截取記憶體分配及查看在應用程式之整個執行時間上的使用率)。此資訊在決定效能特性時有用,且此資訊可由應用程式的主機之記憶體管理器智慧地使用。可使用此資訊的方式之實例包括智慧型廢料收集、智慧型分頁至碟片、智慧型快取至較高效能快取記憶體及甚至警告使用者關於應用程式可能遭遇的潛在記憶體限制。
利用二進制之靜態分析、二進制的行為之執行時間分析,及藉由檢測二進制,有可能收集關於二進制的給定記憶體分配及彼等分配之使用率中的任一者之額外資訊。此資訊隨後可用以驅動圍繞在實體記憶體內載入/卸載及分配的位置之更智慧的行為。記憶體管理系統提供構件以用元資料自動地注釋應用程式記憶體分配,該元資料描述分配本身之潛在的或實際的使用率。此分析可在二進制上靜態地或者在執行時間期間動態地自動執行,而不需要現有應用程式之任何開發者互動或再創作。一旦執行分析,則該分析可由系統快取,因此主機作業系統知道未來如何處理應用程式。分析亦可經公開以由其他用戶端發現,而非僅經本端快取。此外,有可能將資訊曝露於使用者,以進行視需要之編輯,從而允 許管理員或使用者定製應用程式之元資料及應用程式主機將如何處理應用程式之記憶體分配。
有可能使用靜態及動態分析來導出關於應用程式的記憶體分配之額外資訊,且此資訊隨後可用以幫助導引應用程式及系統記憶體分配之整體管理。實例為當正在接觸記憶體時,有可能決定另一記憶體區段是否用以幫助填充此記憶體分配。若此記憶體分配隨後取決於另一分配,則可指示此相依性,或者可簡單地藉由位元注釋記憶體分配,以指示在無輸入的情況下不產生該記憶體分配。靜態分析可決定軟體程式碼在何處接觸記憶體、如何使用記憶體、如何填充記憶體、程式碼路徑的共用性如何(例如,是否一次寫入程式碼路徑/讀取許多(WORM)程式碼路徑)及使用記憶體之頻率。動態分析可檢測所有分配及/或存取(類似於分析器),且動態分析可擷取系統環境對於程式碼的操作之影響、影響操作之使用者設定及不可用或難以靜態地決定之其他資料。
在一些實施例中,記憶體管理系統在已分析應用程式之後輸出應用程式的記憶體使用率之貨單或其他描述。此舉允許系統快取分析之結果且再使用結果用於應用程式之未來執行。作業系統可設計有系統,該系統在應用程式二進制第一次執行時(或在如應用程式虛擬化之排序的程序期間)執行此分析且隨後儲存分析以供二進制每次執行時使用。核心或其他主機可經由額外資訊讀取貨單資料且採取適當的動作,該額外資訊描述應用程式 如何使用記憶體。應用程式使用率可隨時間變化,因此可不時動態地更新貨單或其他快取。在一些情況下,系統可針對每一分配來分配記憶體之整個頁,以便每一記憶體存取觸發頁錯失,該頁錯失允許核心控制如何使用記憶體,且系統可提供對記憶體的應用程式引用與本文進一步描述的實際記憶體分配之間的間接類型。
在一些實施例中,系統可提供關於應用程式記憶體行為之報告。此舉為分析之另一用途,且此舉可幫助管理員作出關於應用程式之決策,諸如,該系統將在哪個伺服器或虛擬機器上執行良好。系統亦可提供記憶體使用率之市場評級,以便行動電話應用程式商店之使用者(例如)可在下載應用程式之前知道應用程式將要如何使用行動電話之可用記憶體(例如,使用較多記憶體、使用較少記憶體等等)。管理員亦可將此資訊用於基於所收集的關於記憶體消耗之元資料,而在各個系統間進行軟體之IT部署。
記憶體管理系統可使用自記憶體使用率分析導出的資訊,以在系統閒置或利用不足時伺機分配且潛在地填充記憶體。知道應用程式之記憶體未來使用率允許系統更有效率地分配記憶體且允許系統在系統利用不足時有效利用時間來分配可能在系統處於較大負載之下時使用的記憶體。此舉允許較大負載使用更多處理或由較早完成的工作變得可用的其他資源。
主機修正
記憶體管理系統包括對核心或應用程式主機的修正,以接收關於由應用程式提供或經由應用程式之分析決定的記憶體使用率之額外資訊。不同於傳統的軟體記憶體管理,由於增加了對由元資料提供的記憶體使用率及自本文所述之應用程式傳輸的其他資訊之洞察力,核心可在不具有應用程式之知識或動作的情況下執行更多操作來有效率地管理記憶體。核心隨後可通知應用程式已採取了何種動作或管理記憶體,使得在應用程式需要記憶體時該記憶體已就緒,以便應用程式不察覺或不關心核心之與記憶體相關的動作。核心隨後可執行更佳的分頁(例如,藉由將次要的或不可能使用的記憶體卸載至較慢碟片儲存器)、可在記憶體壓力發生時釋放記憶體,且可代表一或更多個應用程式使用由核心提供的操作環境採取其他動作來管理記憶體。舉例而言,核心可更佳地分配記憶體使得碎片較少。
記憶體為作業系統中之受約束資源;因此,重要的是,核心適當地追蹤在何處分配記憶體,以便該核心可按需要自應用程式恢復記憶體。一個解決方案為在將記憶體分配給應用程式時使應用程式指派優先級至記憶體。因此,當系統決定該系統在記憶體上較低時,核心可決定最低優先級的記憶體在何處,且核心可解除分配或分頁彼記憶體,而不影響具有較高優先級記憶體的其他應用程式之執行。
傳統上,由核心決定記憶體之優先級及記憶體對應用 程式的優先級分配。當系統在記憶體上執行較低時,核心可任意地釋放由具有較高優先級之應用程式使用的記憶體,因而中斷或降級應用程式之執行。實情為,較低優先級記憶體應首先解除分配。存在與核心如何決定自哪個應用程式釋放記憶體有關之有趣的態樣。一個解決方案為使應用程式在本身之間決定何種優先級次序用於記憶體資源。記憶體優先級方案要求應用程式在分配或解除分配時將經分配或經解除分配的記憶體之優先級指定至該等應用程式。因此,當存在記憶體壓力時,核心具有藉由優先級分級的記憶體映射,且核心可首先釋放且定位較低優先級記憶體。或者,核心可將通知發送至應用程式,該應用程式具有需要被釋放的分配之列表。記憶體管理系統可完全由作業系統代管,或該記憶體管理系統可在操作與應用程式之間合作。
優先級模型可藉由建立記憶體分配API來實施,每當發出記憶體請求時該記憶體分配API封裝應用程式。此舉亦可有益於未註冊之應用程式。藉由利用此API,由子系統自動地追蹤應用程式及優先級,而無不使應用程式有效地管理記憶體優先級。核心物件併入所有註冊、計算、發送訊號及記憶體管理功能性,因此每一應用程式僅必須調用此物件(或在未修正應用程式的情況下代表應用程式使此物件被調用)。
替代性解決方案為在核心外部具有主應用程式,該主應用程式用以追蹤當前正在執行的各個應用程式。當應 用程式請求記憶體時,將該等應用程式註冊至主應用程式。因此,當應用程式變得無回應時,主應用程式可決定是否刪除僵屍應用程式,以收回記憶體或將該記憶體保持暫懸,以便可在需要記憶體時將記憶體返回至應用程式。
核心或主機可使用增強型記憶體資訊以更有效率地作出各種記憶體管理決策。舉例而言,低功率裝置之核心可選擇關閉記憶體之記憶庫,以節省電池壽命。系統可刪除或換出在待關閉的記憶庫中具有記憶體之程序。系統亦可解片段在若干記憶庫間散佈的記憶體,以實現可被關閉的一些空的記憶庫。作為另一實例,核心可選擇將一些記憶體分配推至其他裝置(包括基於雲端的儲存設施)。許多小佔據面積、低功率作業系統不具有分頁之概念,因此在此情況下,可能通過由另一裝置/服務代管的代表性狀態傳送(Representational State Transfer;REST)介面支援記憶體分配。以類似於在資料庫快照內翻捲的方式,應用程式在記憶體中不具有整個資料庫,但該應用程式為自資料庫服務/伺服器輸送的塊。應用程式不知道該等應用程式正在看快照而非整個資料庫。能夠確信地四處移動記憶體或解除分配記憶體允許核心/主機更佳地管理記憶體且仍維持記憶體可用性之應用程式預期。
在一些實施例中,系統與除記憶體之外的其他主機位準物件或組件一起使用。舉例而言,系統可在顯示器關 閉時關閉圖形處理單元(graphical processing unit;GPU),或在個別驅動器之相關聯硬體未被使用或在一段時間內將不被使用時關閉個別驅動器。系統亦可用於系統之冬眠,以首先解片段記憶體且隨後將記憶體分配之線性流串流至可在系統醒來時容易重新載入之碟片。不同於儲存在大小上等於整個實體記憶體之檔案之傳統冬眠,記憶體管理系統可在冬眠之前促進應用程式釋放不需要的或容易恢復的記憶體(或可為該等應用程式進行此操作),且因此,該記憶體管理系統可儲存更小量之冬眠資料。除記憶體之外被管理的其他項目可包括檔案處置、計時器、核心物件等等。系統可正如記憶體使用率一樣接收關於此等項目之使用率資訊(或自靜態及動態分析決定該使用率資訊)。
在一些實施例中,記憶體管理系統接收與每一記憶體分配相關聯之功率狀態。舉例而言,在功率位準X下,系統可決定不再需要一些記憶體分配。此舉可允許電池約束裝置藉由卸載在彼功率位準下不需要的任何記憶體來切換至較低功率模式。舉例而言,行動電話可在記憶體中保持足夠的應用程式資料,以回應電話或警告使用者有新電子郵件,但該行動電話可卸載其他較低優先級功能或應用程式。在一些情況下,應用程式可僅需在使用處於一些較低功率狀態下的記憶體之前驗證指標有效性,但該等應用程式可正常存取處於較高功率狀態下的記憶體。此舉可作為用於任何給定平臺的應用程式與主 機之間的合約中之保證來提供。
系統組件及操作環境
第1圖為圖示在一個實施例中,記憶體管理系統之組件之方塊圖。系統100包括元資料接收組件105、填充規格組件110、分配請求組件115、記憶體引用組件120、應用程式介面組件125、靜態分析組件130、動態分析組件135、主機組件140、請求接收組件145、請求儲存組件150、分配組件155、記憶體動作組件160及資料儲存組件165。本文進一步詳細描述此等組件中之每一組件。
元資料接收組件105、填充規格組件110、分配請求組件115及記憶體引用組件120一起組成系統100曝露給應用程式的記憶體框架。願意修正開發者之應用程式碼用於更有效率的記憶體管理之開發者可有效利用來自開發者的應用程式的此等組件,以建立允許主機或核心代表應用程式更有效地管理記憶體之應用程式。
元資料接收組件105接收與每一記憶體分配相關聯之資訊,該資訊向應用程式主機提供描述記憶體如何由應用程式使用之資訊。舉例而言,元資料可指示對於應用程式而言分配應該具有的易存取性或應用程式計劃有多頻繁地存取與分配相關聯之記憶體。元資料亦可指示要產生記憶體內容有多困難且因此,若內容被釋放或被分頁至碟片,則應用程式或主機替換記憶體內容將有多困難。元資料接收組件105可在對記憶體分配API的調用中接收元資料或在已在用於提供元資料之追蹤API中分 配記憶體之後接收元資料。
填充規格組件110接收描述如何填充特定記憶體分配之內容的資訊。記憶體之內容可來自各種來源,諸如,來自讀取儲存於碟片上的檔案之內容、來自對輸入資料執行一或更多種計算、來自使用者輸入、來自經網路存取的資訊(例如,資料庫或網際網路)等等。在一些實施例中,應用程式將記憶體填充函數傳遞至主機,以便主機可調用函數,以在由主機決定的時間處填充記憶體內容。為有效率地使用處理及其他資源,主機可選擇延遲填充記憶體,直至資源利用不足或閒置為止。此外,主機亦可具有解除或釋放先前填充的記憶體用於其他用途,且稍後在應用程式預期使用記憶體之前隨後再分配且再填充記憶體之自由。所接收的元資料可提供主機使用的資訊,以知道應用程式將在何時使用記憶體,或應用程式可在每次試圖使用記憶體之前通知主機,以便主機可檢查記憶體之當前狀態。
分配請求組件115將請求自應用程式提交至主機,以基於所接收的元資料及填充規格來分配記憶體。注意到,儘管主機接收請求,但由主機決定是否作為回應來立即服務請求或等到另一適當時間。在極端情況下,主機可能不分配任何記憶體直至準備好存取該記憶體為止,從而允許主機節省有限資源,直至當應用程式需要記憶體且必須為應用程式分配記憶體以能夠執行該應用程式之工作時之最後可能時刻為止。分配請求組件115 將所提交的請求儲存於由主機管理的資料儲存器中,且該分配請求組件115包括所接收的元資料及填充規格,以供隨後的記憶體管理動作使用。
記憶體引用組件120在應用程式存取記憶體之前自應用程式接收指示,該記憶體為先前提交的分配請求之主題。因為主機可使記憶體變得不可用或實際上延遲分配的記憶體直至該主機選擇為止,所以應用程式需要一種方法來確保在應用程式準備好使用記憶體時記憶體是可用的。記憶體引用組件120用於此目的且允許應用程式指示該應用程式準備好存取特定記憶體分配。作為回應,主機可將實際記憶體位置之指標傳遞(若記憶體已可用)至應用程式,或該主機可基於所接收的填充規格及元資料來產生且填充記憶體(若當前未分配記憶體)。應用程式可發送解除記憶體之指示,以便主機自由地再次在記憶體管理決策中包括記憶體。
應用程式介面組件125提供應用程式與主機之間的通訊介面,以協商記憶體分配之使用。介面可包括由應用程式使用的請求記憶體分配且指定關於分配的資訊之一或更多個函數或基本類別,以及由主機使用的使用由應用程式提供的使用者定義函數與應用程式之記憶體互動之函數或基本類別。應用程式與主機之間增強的通訊允許主機具有比通常位準高得多的對於應用程式的記憶體使用之可見性,且該應用程式與主機之間增強的通訊允許主機代表共享有限資源的各種應用程式更有效地管理 記憶體。
針對未經特定構建以使用記憶體管理系統100之應用程式,應用程式介面組件125提供由靜態及/或動態分析決定的任何經檢測應用程式碼之間的互動,且該應用程式介面組件125與主機以類似於先前論述的方式之方式互動。用未經構建以使用系統100之應用程式,系統100可具有較少關於記憶體分配之目的或其他規格的資訊,且該系統100可限於系統100可經由應用程式之靜態及動態分析發現的資訊。然而,此分析仍可發現可用於更有效地管理由舊有應用程式分配的記憶體之元資料。在一些情況下,系統100可能夠自動地偵測應用程式如何填充記憶體,且該系統100可能夠在無應用程式之明顯合作的情況下執行先前描述的記憶體內容之相同種類的隨選填充。
靜態分析組件130靜態地分析應用程式二進制或其他應用程式碼,以決定應用程式如何使用記憶體。組件130可分析二進制碼、中間碼(例如,MICROSOFT TM中間語言(intermediate language;IL)碼)或應用程式之其他經編譯的或可執行版本。靜態分析在過去的數年內有實質進步,且許多技術在此項技術中熟知用於決定應用程式二進制執行何種操作及該應用程式二進制如何執行該操作。記憶體管理系統100使用此等技術來特別集中於應用程式分配且使用記憶體之區域。組件130可檢測應用程式二進制,以接收資訊或截取應用程式之特定動 作,且該組件130可用新動作或額外動作來替換經截取動作。舉例而言,若組件130發現對記憶體分配函數之調用,則組件130可收集可自靜態分析獲得的任何元資料且調用可將元資料作為參數接收之分配函數的版本。以此方式,主機自應用程式接收元資料資訊恰如應用程式由該應用程式之開發者修正,以提供此資訊。同樣,系統可決定應用程式如何填充或存取特定記憶體分配,以便可向主機提供填充規格及描述記憶體引用之資訊。
動態分析組件135動態地分析執行應用程式,以收集與應用程式之記憶體使用有關之額外資訊,該資訊難以用靜態分析決定。通常應用程式包括程式化步驟,該等程式化步驟阻礙靜態分析(因為該等步驟就是如此,而故意地或者簡單地阻礙)。動態分析具有可用資訊,諸如,自外部組件接收的回應之內容及由應用程式使用的記憶體之實際內容,對於該可用資訊而言,在靜態分析期間僅猜測或近似值可用。因此,動態分析可找到記憶體使用及在靜態分析期間未找到之其他應用程式活動。組件135亦可使用動態分析來確認靜態分析之結果。動態分析組件135向主機提供經決定資訊,以進一步允許舊有應用程式有效利用由系統100提供的至少一些功能性。
主機組件140包括環境,在該環境中,應用程式執行且提供對由系統100提供的記憶體管理之存取。取決於平臺,主機可包括各種軟體實體。對於傳統的桌上型計 算系統而言,主機為作業系統,該作業系統可包括核心及諸如驅動程式之其他核心模式的軟體程式碼。對於受管理的軟體環境而言,主機可包括執行時間,諸如,MICROSOFT TM.NET TM執行時間或MICROSOFT TM SILVERLIGHT TM執行時間。Web應用程式亦可包括應用程式主機,且該Web應用程式可在沙箱式環境中執行,該沙箱式環境在其他伺服器或桌上型計算環境內執行。伺服器計算系統可包括虛擬化硬體或軟體,且該伺服器計算系統可包括在比一或更多種作業系統核心更高位準下操作的超管理器。記憶體管理系統100可實施各種位準之軟體程式碼,且因此,該記憶體管理系統100不限於任何特定類型之主機。主機組件140代表負責與應用程式互動及管理用於正在執行系統100的特定平臺的資源之組件。
請求接收組件145、請求儲存組件150、分配組件155及記憶體動作組件160一起組成記憶體管理器之組件,記憶體管理器之該等組件經修正以實施本文所述之系統100。
請求接收組件145自應用程式接收請求,以分配記憶體。每一請求包括元資料,該元資料向主機提供描述應用程式如何使用經分配記憶體之資訊。請求接收組件145可自在特定主機上執行的多個或所有應用程式接收請求,以便主機具有廣泛的描述如何使用記憶體之資訊。主機隨後可優先化對決定採取特定動作(例如,分 頁或釋放記憶體,以減小記憶體壓力)有影響之分配。
請求儲存組件150在作出記憶體管理決策期間儲存所接收的請求及相關聯元資料資訊用於後續使用。主機在接收請求時可能或可能不滿足分配請求。然而,無論主機立即滿足請求或隨後滿足請求,主機皆儲存由與分配相關聯之應用程式提供的資訊,以便主機隨後在記憶體動作適當時具有可用資訊。在一些實施例中,在應用程式具有經分配記憶體之後,主機在單獨通訊中自應用程式接收元資料及其他資訊。在此等情況下,主機可在多個時間處或當有用資訊可用時儲存分配資訊。
分配組件155執行實際動作以分配記憶體,來滿足一或更多個所接收的應用程式分配請求。分配組件155可分配來自應用程式堆或直接來自實體記憶體之記憶體,該實體記憶體安裝於可由主機存取且由主機管理之電腦系統中。在分配之後,記憶體專用於特定應用程式且無法由其他應用程式使用(除非其他應用程式經由典型的共享記憶體技術請求執行此操作)。分配組件155可與頁表及虛擬記憶體一起工作,以提供可看到用於分配之實體記憶體的視窗,且所提供的記憶體可由碟片或其他儲存器經由調換檔返回。
記憶體動作組件160執行動作,以在裝置上管理記憶體,且該記憶體動作組件160存取先前所儲存的經接收請求資訊,以決定將受所執行之動作影響的一或更多個適當的記憶體分配。動作可包括將記憶體內容調換至調 換檔、釋放先前經分配記憶體、請求應用程式減小該應用程式之記憶體佔據面積或影響由一或更多個應用程式使用的記憶體之任何其他動作。通常,在執行記憶體管理動作時主機之目的為處置當前或迫近的情況,諸如,低記憶體(例如,記憶體壓力)、收集足夠記憶體以滿足應用程式要求等等。
資料儲存組件165儲存由主機使用的資訊,以代表一或更多個應用程式管理記憶體。資料儲存組件165可包括留出供系統100、單獨的快閃或碟片儲存器或用於儲存資料之其他設施使用之記憶體。資料儲存組件165亦可包括儲存於每一應用程式之記憶體空間中的資料,該資料追蹤與彼應用程式及由主機使用的其他資訊有關之分配,以代表應用程式管理記憶體。
實施記憶體管理系統的計算裝置可包括中央處理單元、記憶體、輸入裝置(例如,鍵盤及指標裝置)、輸出裝置(例如,顯示裝置)及儲存裝置(例如,磁碟機或其他非揮發性儲存媒體)。記憶體及儲存裝置為可用電腦可執行指令(例如,軟體)編碼的電腦可讀取儲存媒體,該等電腦可執行指令實施或賦能系統。此外,資料結構及訊息結構可經由諸如通訊鏈路上的訊號之資料傳輸媒體儲存或傳輸。可使用各種通訊鏈路,諸如,網際網路、區域網路、廣域網路、點對點撥接連接、行動電話網路等等。
系統之實施例可在各種操作環境中實施,該等操作環 境包括個人電腦、伺服器電腦、手持式或膝上型裝置、多處理器系統、基於微處理器的系統、可程式化消費者電子裝置、數位相機、網路PC、迷你電腦、大型電腦、包括以上系統或裝置中之任何系統或裝置的分散式計算環境、視訊轉接器、晶片上系統(systems on a chip;SOCs)等等。電腦系統可為行動電話、個人數位助理、智慧型電話、個人電腦、可程式化消費者電子裝置、數位相機等等。
可在藉由一或更多個電腦或其他裝置執行的電腦可執行指令(諸如,程式模組)之一般上下文中描述系統。大體而言,程式模組包括執行特定任務或實施特定抽象資料類型之常式、程式、物件、組件、資料結構等等。通常,在各種實施例中,必要時可組合或分配程式模組之功能性。
第2圖為圖示在一個實施例中,記憶體管理系統之操作環境之方塊圖。環境包括核心/主機210、一或更多個應用程式220、記憶體處置框架230、經儲存分配元資料240及一或更多種工具250。核心/主機210管理由一或更多個應用程式220共享的記憶體。記憶體處置框架230提供一或更多個API,應用程式220可調用該一或更多個API,以分配記憶體及提供記憶體分配元資料。記憶體處置框架230儲存所接收的元資料240。工具250對未經設計以在本機提供分配資訊之應用程式操作,以經由靜態及動態分析擷取此資訊。隨後將任何經擷取資訊 儲存為分配元資料240。
系統操作
第3圖為圖示在一個實施例中,記憶體管理系統在軟體應用程式內請求記憶體之分配及使用的處理之流程圖。
在方塊310中開始,應用程式設定分配元資料,該分配元資料描述應用程式將如何使用記憶體分配。應用程式可構建用於傳遞至分配函數之參數結構、調用用於提供分配元資料之API,或根據本文所述之記憶體管理系統設定用於分配記憶體之導出類別之參數。分配元資料可包括記憶體對於應用程式之優先等級、應用程式計劃有多頻繁地使用經分配記憶體、對於應用程式而言替換分配之內容及與應用程式之記憶體使用有關的其他資訊有多困難,及主機可如何操縱記憶體,以有效地使用由多個應用程式共享之實體記憶體資源。
在方塊320中繼續,應用程式設定記憶體填充函數,該記憶體填充函數填充記憶體分配之內容。記憶體填充函數可存取來自檔案之資訊、執行一或更多種計算以產生儲存於記憶體分配中之結果或執行填充記憶體分配之其他動作。藉由向主機提供記憶體填充函數,而非就在分配之後調用填充函數,應用程式為主機提供所需要的資訊,以按需要解除且再填充記憶體或延緩記憶體之分配及初始填充記憶體直至對於主機而言更適當的時間為止。
在方塊330中繼續,應用程式調用由主機提供的分配介面,該主機管理在多個應用程式間共享的實體記憶體,其中應用程式經由分配介面向主機提供經設定分配元資料及記憶體填充函數。分配介面可包括作業系統API、執行時間函數或在應用程式與負責記憶體管理的主機之間傳遞資訊之其他方式。分配介面提供比現今通常在記憶體分配中提供的資訊更多之資訊,且該分配介面給予主機可用於在計算裝置上更有效率地管理記憶體之資訊。
在方塊340中繼續,回應於調用分配介面,應用程式接收引用,其中引用充當間接識別符,用於由應用程式後續使用經分配記憶體。在接收請求之後主機可或不可立即分配記憶體。此外,主機可以某種方式不時修正記憶體(例如,解除該記憶體、將該記憶體分頁至碟片等等),對於該等方式而言,主機需要在應用程式使用記憶體之前再次接收控制。因此,主機為應用程式提供對記憶體之引用,且在應用程式想要使用記憶體時,應用程式提供引用,以獲得對記憶體(例如,指標)之直接存取。
在決策方塊350中繼續,若應用程式偵測到應用程式用盡經分配記憶體,則應用程式完成,否則應用程式在方塊360處繼續。在完成之前,應用程式可調用分配介面,以解除分配(或釋放)先前經分配記憶體。若應用程式未使用記憶體,且主機實際上未分配記憶體,則此 動作可簡單地清除主機之與分配有關的經儲存項且將控制返回至應用程式。
在決策方塊360中繼續,若應用程式在應用程式中偵測到經分配記憶體之使用,則應用程式在方塊370處繼續,否則應用程式循環至方塊350,以等待記憶體存取或記憶體分配目的之完成。無論在應用軟體程式碼中記憶體在何處被存取,應用程式皆可調用特定函數,或該應用程式可將記憶體分配封裝於類別中,該類別用對主機之適當調用包裹記憶體之存取,以使記憶體變得可用。
在方塊370中繼續,應用程式自主機請求對記憶體分配的直接存取。若主機已分配記憶體,則主機將指標返回至應用程式,在該指標處可存取記憶體。若主機尚未分配記憶體或已解除分配且再使用記憶體,則主機回應於應用程式請求而分配記憶體、調用所接收的填充函數以填充記憶體內容且隨後將指標或存取記憶體之其他構件返回至應用程式。
在方塊380中繼續,應用程式經由記憶體之自主機接收的位址來存取記憶體分配。應用程式可修正記憶體、讀取來自記憶體之資訊或執行其他典型的記憶體操作。當應用程式通過存取記憶體時,應用程式可向主機指示主機可再次執行可使記憶體變得不可用之管理操作。應用程式可更新由填充函數所使用的資料,以便若主機再次再填充記憶體,則記憶體將包括最近的改變(若有)。在方塊380之後,此等步驟結束。
第4圖為圖示在一個實施例中,記憶體管理系統在主機內接收分配及使用記憶體之應用程式請求的處理之流程圖。在方塊410中開始,主機自應用程式接收記憶體分配請求。主機可服務來自多個應用程式之請求,且該主機可包括記憶體管理器,該記憶體管理器在主機平臺上執行的多個應用程式之間截割或共享有限的實體記憶體。記憶體分配請求可包括資訊,諸如,經請求記憶體大小或與所請求的記憶體有關之其他參數。
在方塊420中繼續,主機接收記憶體分配元資料,該記憶體分配元資料指定應用程式計劃使用經請求記憶體分配之方式。元資料可包括資訊,諸如,記憶體分配對於應用程式之重要性或優先級、分配是否適合於分頁至碟片、若主機必須釋放分配則應用程式是否可恢復記憶體之內容等等。
在方塊430中繼續,主機自應用程式接收記憶體填充函數,該記憶體填充函數可由主機調用,以填充經請求記憶體分配之內容。若主機需要釋放記憶體分配來滿足另一應用程式請求或減輕其他記憶體壓力,則具有填充記憶體分配之構件允許主機延緩記憶體之分配以及恢復該記憶體。
在決策方塊440中繼續,若主機決定主機可直接回應於請求而分配記憶體,則主機在方塊450處繼續,否則主機在方塊460處繼續。主機可決定是否基於應用程式所指示的記憶體對於應用程式之重要性如何及應用程式 計劃有多頻繁地存取記憶體,來直接分配記憶體。主機亦可考慮其他因素,諸如,在請求時計算裝置(在該計算裝置上執行主機)有多忙。
在方塊450中繼續,主機分配來自對主機可用的實體記憶體之經請求記憶體。主機可設立頁表或其他虛擬記憶體,應用程式經由該等頁表或該其他虛擬記憶體存取實體記憶體。傳統的主機直接回應於應用程式請求而分配記憶體或若主機無法滿足請求則使請求失效。然而,記憶體管理系統可延緩請求或執行其他記憶體管理動作,以更有效率地使用記憶體及其他主機資源。
在方塊460中繼續,主機儲存用於隨後分配之所接收的請求以及所接收的元資料及填充函數。主機可維持由各種應用程式請求的記憶體之資料儲存,自該資料儲存選擇何時需要記憶體管理動作(諸如,使更多記憶體變得可用)。由應用程式提供的元資料幫助主機決定哪些應用程式及應用程式內之哪些分配將最小程度地受到主機之記憶體管理動作的負面影響。在方塊460之後,此等步驟結束。
在一些情況下,應用程式之開發者不願意或無法作出改變來支援新作業系統特徵結構。在此等情況下,如進一步參閱第5圖及第6圖描述,記憶體管理系統可仍能夠藉由分析應用程式二進制資訊以發現關於記憶體分配之資訊,來提供一些增強型記憶體管理。
第5圖為圖示在一個實施例中,記憶體管理系統分析 未經特定設計以提供記憶體分配資訊的應用程式之處理之流程圖。
在方塊510中開始,系統偵測應用程式,用於該應用程式之描述由應用程式進行的記憶體分配之資訊不可用。應用程式可包括旗標或關於該旗標之二進制模組的其他資訊,該旗標或其他資訊指定應用程式是否參與由記憶體管理系統提供的記憶體模型,或該應用程式可提供另一指示。系統可快取先前決定的應用程式分配資訊,以便僅執行一次對每一應用程式之分析。因此,在此步驟中,系統亦決定先前尚未執行分析。
在方塊520中繼續,系統對應用程式執行分析,以決定由應用程式進行的記憶體分配。分析可包括應用程式之各種形式的靜態及/或動態分析。靜態分析在不執行應用程式的情況下發生且檢驗應用程式之二進制碼,以決定應用程式之行為。動態分析在應用程式執行時發生且檢驗應用程式之記憶體中程式碼、資料結構及其他資訊,以決定應用程式之行為。系統可尋找對特定主機API之調用,以分配、存取且釋放記憶體,且該系統可註解位置、周圍的增補資訊、用以填充經分配記憶體之步驟等等。
在方塊530中繼續,系統掛鉤應用程式,以在應用程式內應用程式分配記憶體之位置處提供分配資訊。可用各種形式之應用程式掛鉤技術,諸如,MICROSOFT TM Detours及其他,該等應用程式掛鉤技術允許應用程式二 進制碼改向,以在程式中的任何點處截取或擴充應用程式之正常行為。舉例而言,系統可提供應用程式鉤,該應用程式鉤調用用於提供分配元資料之分配函數,而非不具有最初由應用程式調用的元資料之標準分配函數。
在方塊540中繼續,系統自應用程式接收分配記憶體之請求及由經掛鉤應用程式碼提供的相關聯分配資訊。由主機接收請求,該主機可能夠決定分配資訊來自未經特定設計以提供分配資訊之應用程式。主機對此等應用程式之行為不同於主機針對經設計以與系統一起工作的應用程式之行為。舉例而言,主機可潛在地佔有由未經設計以與系統一起工作的應用程式提供之較少資訊。在一些實施例中,為鼓勵採取新記憶體模型,系統可藉由在記憶體壓力發生時,寧願將應用程式之資料調換至碟片或執行其他記憶體管理動作,來懲罰未遵守新記憶體模型之應用程式。在方塊540之後,此等步驟結束。
第6圖為圖示在一個實施例中,靜態地分析應用程式且提供增強型記憶體資訊之記憶體管理系統的處理之流程圖。
在方塊610中開始,系統接收經編譯應用程式碼,該經編譯應用程式碼不提供與對記憶體分配函數的調用相關聯之記憶體分配資訊。系統可在執行應用程式的第一請求之後、在自計算裝置之硬驅動機或其他儲存器之掃描大量處理期間或回應於特定使用者或管理員請求,來接收應用程式碼。經編譯應用程式碼可包括用於特定處 理器之二進制碼(例如,x86或x64二進制碼)、用於特定執行時間之中間語言碼或其他形式之非源應用程式碼。在源可用的情況下,應用程式可經直接修正以使用本文其他處所述之系統。
在方塊620中繼續,系統對經接收應用程式碼執行靜態分析,以在程式碼內決定應用程式分配記憶體之位置。靜態分析可(諸如)經由導入模組或其他構件尋找對記憶體分配函數之調用。靜態分析擅長尋找對函數以及在一些情況下被傳遞的參數之調用。在一些實施例中,系統用動態分析擴充靜態分析,且該系統執行應用程式,以識別靜態不可用或可容易靜態地偵測之資訊。
在方塊630中繼續,系統在經分析應用程式碼中識別一或更多個與記憶體相關的程式碼動作。程式碼動作可包括記憶體分配、記憶體存取、記憶體解除及其他記憶體操作。系統可藉由動作發生之位址來識別程式碼動作,或藉由隨後可向主機提供或隨後可經修正以改變預設應用程式行為之其他識別來識別程式碼動作。
在方塊640中繼續,系統識別與每一經識別程式碼動作有關之周圍資訊,該周圍資訊提供描述經分配記憶體如何由應用程式使用之額外資訊。周圍資訊可告訴系統儲存分配多久(例如,在相同函數中使用一次或儲存於全局變數中用於重複的後續使用)、應用程式填充記憶體分配之內容有多容易等等。周圍資訊可經由靜態及/或動態分析識別。
在方塊650中繼續,系統在執行應用程式之後,在資料儲存器中儲存經識別的與記憶體相關之程式碼動作及任何經識別周圍資訊,用於由主機後續擷取。在一些實施例中,系統在用應用程式模組儲存的貨單中儲存經識別資訊,以便載入應用程式之主機可執行經識別位置之任何截取或掛鉤,以向主機提供描述由應用程式進行的記憶體分配之更多資訊。主機可使用此資訊,(例如)以在系統閒置或利用不足時伺機分配藉由分析決定的、應用程式在未來一些時間將需要的記憶體。此舉允許舊有應用程式參與由記憶體管理系統提供的記憶體模型。在方塊650之後,此等步驟結束。
第7圖為圖示在一個實施例中,記憶體管理系統回應於經偵測記憶體壓力而採取與記憶體有關之動作的處理之流程圖。記憶體壓力可在具有有限記憶體之裝置接近該裝置之可用記憶體時發生。舉例而言,系統作業系統可將記憶體壓力定義為在已使用實體RAM之90%時發生。
在方塊710中開始,系統接收資訊,該資訊描述多個記憶體分配請求及該等記憶體分配如何由一或更多個應用程式使用。在一些情況下,當自應用程式接收分配時,系統儲存該等分配之列表或其他資料結構以及描述如何使用每一分配之相關聯元資料。分配使用資訊可包括優先級或其他資訊,該其他資訊可幫助系統決定可釋放、分頁或者處置哪些分配,以有效率地管理可用記憶體。
在方塊720中繼續,系統偵測記憶體壓力,該記憶體壓力指示需要動作以繼續有效率地執行應用程式。經偵測記憶體壓力可包括核心或其他主機可採取的各種情況或動作。舉例而言,核心可能想要切斷記憶體之記憶庫,以節省功率,且該核心可偵測儲存於彼記憶庫上之分配且解除或換出彼等分配至碟片,以便可切斷記憶庫。作為另一實例,系統可解片段記憶體記憶庫,以實現可被切斷之空的記憶庫。在主機不處於記憶體之使用的完全控制下的情況下,在無應用程式合作的情況下通常難以執行移動或解除記憶體之操作。然而,本文所述之記憶體管理系統允許主機具有對於如何管理記憶體之多得多的資訊及控制。
在方塊730中繼續,系統列舉經接收分配請求,以決定待動作的分配。系統可遍歷分配之列表或其他資料結構,以決定若需要釋放分配則可容易地恢復之分配或應用程式不可能再次使用之分配。
在方塊740中繼續,系統選擇待動作的經列舉分配中之一或更多者。系統可基於經接收資訊來選擇分配,該經接收資訊描述分配如何由請求分配之應用程式使用。在一些情況下,系統可取決於記憶體管理器之特定目標(例如,對記憶體之特定總大小動作及尋找總計達彼大小或超過彼大小之分配)來選擇多個分配。
在方塊750中繼續,系統對選定的分配執行動作,以減輕記憶體壓力。動作可包括釋放先前經分配記憶體、 將記憶體內容調換至碟片或其他儲存器、將記憶體自先前位置移動至新位置等等。在一些情況下,系統通知應用程式動作,因此該應用程式可修正取決於分配之行為。舉例而言,應用程式可藉由下次由應用程式使用記憶體時再分配該記憶體來回應。在方塊750之後,此等步驟結束。
第8圖為圖示在一個實施例中,記憶體管理系統啟動應用程式之處理之流程圖,該應用程式之記憶體先前已藉由主機修正。在許多多任務系統中,將應用程式推至後臺,且隨後藉由使用者或作業系統再啟動應用程式。在行動裝置上,使用者可在某一時間處與一個應用程式互動,且當特定應用程式在前面時作業系統可懷疑其他應用程式。作業系統可釋放其他應用程式之記憶體或將其他應用程式之記憶體串流至碟片或其他儲存器。在啟動之後,作業系統可動作以使應用程式就緒以再次執行。
在方塊810中開始,系統接收啟動之應用程式請求。請求可來自應用程式本身、來自使用者或來自作業系統。啟動之請求可簡單地指示使用者正再次與應用程式互動,以使得應用程式可請求先前經分配記憶體。
在方塊820中繼續,系統識別一或更多個先前經接收應用程式記憶體分配。系統可維持由一或更多個分配請求的每一分配之列表或其他資料結構,以便系統可藉由遍歷列表來識別先前經接收記憶體分配。系統可檢查每一分配之狀態,諸如,與分配有關之記憶體是否仍可用 且是否仍含有上次由應用程式置放於彼處之內容。
在決策方塊830中繼續,若系統決定應用程式之分配全部就緒,則系統跳至方塊860,否則系統在方塊840中繼續。系統可釋放、移動、分頁應用程式分配或者對應用程式分配動作,以為諸如執行其他應用程式之其他任務提供更多記憶體。因此,當是時候再次執行應用程式時,系統可恢復先前經動作之分配或可通知應用程式動作,以便應用程式可採取適當動作。
在方塊840中繼續,系統分配未就緒的分配,以將分配置於由應用程式預期的狀態。系統可藉由分配可用實體記憶體來將實體記憶體指定至分配,以滿足分配。在一些情況下,系統可提供虛擬記憶體,諸如,藉由實體記憶體及調換檔返回的虛擬記憶體。
在方塊850中繼續,系統使用由應用程式提供的填充函數來填充經分配記憶體內容。應用程式向系統提供足夠的資訊,以便系統可解除且再產生應用程式之記憶體分配。此舉允許系統作出有效率的決策,以在應用程式之間共享資源,同時保持對應用程式之負效應較低。理想上,當系統記憶體不足或處於其他壓力之下時,系統釋放或移動不會很快就用到的記憶體,且該系統在再次需要該記憶體之前有時間來恢復記憶體。在傳統系統中,主機可盡力做的是猜測,但使用本文記憶體管理系統,主機可十分有效地選擇待動作之一或更多個記憶體分配。
在方塊860中繼續,系統啟動經請求應用程式且為應用程式提供由應用程式預期的記憶體分配。系統可在為應用程式準備記憶體時懸置應用程式,該系統隨後在應用程式之所有記憶體分配就緒時繼續應用程式。在方塊860之後,此等步驟結束。
將自上文瞭解,本文已出於說明之目的描述了記憶體管理系統之特定實施例,但可在不偏離本發明之精神及範疇的情況下進行各種修正。因此,本發明不是限制性的,除由隨附申請專利範圍限制之外。
式時,系統可恢復先第1圖為圖示在一個實施例中,記憶體管理系統之組件之方塊圖。
第2圖為圖示在一個實施例中,記憶體管理系統之操作環境之方塊圖。
第3圖為圖示在一個實施例中,記憶體管理系統在軟體應用程式內請求記憶體之分配及使用的處理之流程圖。
第4圖為圖示在一個實施例中,記憶體管理系統在主機內接收分配及使用記憶體之應用程式請求的處理之流程圖。
第5圖為圖示在一個實施例中,記憶體管理系統分析未經特定設計以提供記憶體分配資訊的應用程式之處理之流程圖。
第6圖為圖示在一個實施例中,記憶體管理系統靜態地分析應用程式且提供增強型記憶體資訊之貨單的處理 之流程圖。
第7圖為圖示在一個實施例中,記憶體管理系統回應於偵測到的記憶體壓力而採取與記憶體有關之動作的處理之流程圖。
第8圖為圖示在一個實施例中,記憶體管理系統啟動應用程式之處理之流程圖,該應用程式之記憶體先前已由主機修正。
100‧‧‧系統/記憶體管理系統
105‧‧‧元資料接收組件
110‧‧‧填充規格組件
115‧‧‧分配請求組件
120‧‧‧記憶體引用組件
125‧‧‧應用程式介面組件
130‧‧‧靜態分析組件
135‧‧‧動態分析組件
140‧‧‧主機組件
145‧‧‧請求接收組件
150‧‧‧請求儲存組件
155‧‧‧分配組件
160‧‧‧記憶體動作組件
165‧‧‧資料儲存組件
210‧‧‧核心/主機
220‧‧‧應用程式
230‧‧‧記憶體處置框架
240‧‧‧分配元資料
250‧‧‧工具
310‧‧‧方塊
320‧‧‧方塊
330‧‧‧方塊
340‧‧‧方塊
350‧‧‧決策方塊
360‧‧‧決策方塊
370‧‧‧方塊
380‧‧‧方塊
410‧‧‧方塊
420‧‧‧方塊
430‧‧‧方塊
440‧‧‧決策方塊
450‧‧‧方塊
460‧‧‧方塊
510‧‧‧方塊
520‧‧‧方塊
530‧‧‧方塊
540‧‧‧方塊
610‧‧‧方塊
620‧‧‧方塊
630‧‧‧方塊
640‧‧‧方塊
650‧‧‧方塊
710‧‧‧方塊
720‧‧‧方塊
730‧‧‧方塊
740‧‧‧方塊
750‧‧‧方塊
810‧‧‧方塊
820‧‧‧方塊
830‧‧‧方塊
840‧‧‧方塊
850‧‧‧方塊
860‧‧‧方塊
100‧‧‧系統/記憶體管理系統
105‧‧‧元資料接收組件
110‧‧‧填充規格組件
115‧‧‧分配請求組件
120‧‧‧記憶體引用組件
125‧‧‧應用程式介面組件
130‧‧‧靜態分析組件
135‧‧‧動態分析組件
140‧‧‧主機組件
145‧‧‧請求接收組件
150‧‧‧請求儲存組件
155‧‧‧分配組件
160‧‧‧記憶體動作組件
165‧‧‧資料儲存組件

Claims (20)

  1. 一種用於在一應用程式主機中處置記憶體管理之電腦實施的方法,該應用程式主機自應用程式接收記憶體優先級資訊,該方法包含以下步驟:在一應用程式主機中接收資訊,該資訊描述多個記憶體分配請求及該等記憶體分配如何由一或更多個應用程式使用;偵測至少一個記憶體情況,該至少一個記憶體情況指示動作以在該主機上繼續有效率地執行應用程式之一需要;列舉該等經接收分配請求,以決定對之動作的分配;選擇該等經列舉的對之動作的分配中之一或更多者;以及對該等選定的分配執行一動作,以緩解該經偵測記憶體情況,其中該等前述步驟藉由至少一個處理器執行。
  2. 如請求項1所述之方法,其中接收描述記憶體分配請求之資訊的步驟包含以下步驟:當由該主機自應用程式接收經儲存分配時,存取經儲存分配之一列表或其他資料結構。
  3. 如請求項1所述之方法,其中接收描述記憶體分配請求之資訊的步驟包含以下步驟:存取優先級或其他資訊,該其他資訊幫助該主機決定可釋放、分頁或者處置哪些 分配,以有效率地管理可用記憶體。
  4. 如請求項1所述之方法,其中偵測該記憶體情況之步驟包含以下步驟:決定一應用程式正用盡執行所需要的記憶體且自其他執行應用程式取得記憶體,以給予該應用程式。
  5. 如請求項1所述之方法,其中偵測該記憶體情況之步驟包含以下步驟:決定無法滿足一即將出現的應用程式記憶體請求,且伺機使更多記憶體變得可用,以在該主機接收該請求時滿足該應用程式之請求。
  6. 如請求項1所述之方法,其中列舉該等請求之步驟包含以下步驟:遍歷分配之一列表或其他資料結構,以決定若需要釋放分配則可容易地恢復之分配。
  7. 如請求項1所述之方法,其中列舉該等請求之步驟包含以下步驟:遍歷分配之一列表或其他資料結構,以決定一應用程式不可能很快使用之分配。
  8. 如請求項1所述之方法,其中選擇分配之步驟包含以下步驟:基於該經接收資訊來選擇分配,該經接收資訊描述該分配如何由請求該分配之該應用程式使用。
  9. 如請求項1所述之方法,其中選擇分配之步驟包含以下步驟:選擇多個分配,以對記憶體之一特定總大小動作,且選擇總計達彼大小或超過彼大小之分配。
  10. 如請求項1所述之方法,其中執行該動作之步驟包含以下步驟:釋放先前經分配記憶體或將記憶體內容調換至碟片或其他儲存器。
  11. 如請求項1所述之方法,其中執行該動作之步驟包含以下步驟:通知該應用程式該動作,因此該應用程式可修正取決於該分配之行為。
  12. 一種用於使用自應用程式接收的分配元資料在一主機內有效率地管理記憶體之電腦系統,該等應用程式在該主機上執行,該系統包含:一處理器及記憶體,該處理器及記憶體經配置以執行實施於以下組件內的軟體指令;一應用程式介面組件,該應用程式介面組件提供一或更多個應用程式與該主機之間的一通訊介面,以協商記憶體分配之使用;一主機組件,該主機組件包括一環境,在該環境中一應用程式執行且提供對由該系統提供的該記憶體管理之存取;一請求接收組件,該請求接收組件自應用程式接收分配記 憶體之請求,其中每一請求包括元資料,該元資料向該主機提供資訊,該資訊描述該應用程式如何使用該經分配記憶體;一請求儲存組件,該請求儲存組件在作出記憶體管理決策期間儲存經接收請求及相關聯元資料資訊用於後續使用;一分配組件,該分配組件執行一實際動作以分配記憶體,以滿足一或更多個經接收應用程式分配請求;以及一記憶體動作組件,該記憶體動作組件執行一動作以在一裝置上管理記憶體,且存取該先前儲存的經接收請求資訊,以決定將受該經執行動作影響的一或更多個適當的記憶體分配。
  13. 如請求項12所述之系統,其中該應用程式介面組件包括一應用程式介面(application programming interface;API),該主機向該等應用程式提供該API,經由該API該等應用程式可提供描述該等分配之資訊,以允許該主機代表該等應用程式管理記憶體。
  14. 如請求項12所述之系統,其中該應用程式介面組件靜態地或動態地分析應用程式二進制模組,以向該主機提供記憶體使用率行為資訊。
  15. 如請求項12所述之系統,其中該請求接收組件、該請 求儲存組件、該分配組件及該記憶體動作組件組成一記憶體管理器之組件,該記憶體管理器之該等組件可對該主機存取,以管理應用程式記憶體。
  16. 如請求項12所述之系統,其中該請求接收組件自在該主機上執行的多個應用程式接收請求,以便該主機可優先化對決定採取與記憶體相關之一動作有影響的分配。
  17. 如請求項12所述之系統,其中該請求儲存組件決定在接收該請求時該主機是否將滿足一給定分配請求,且該請求儲存組件儲存由與該分配相關聯之該應用程式提供的資訊,以便該主機隨後在記憶體動作適當時具有該可用資訊。
  18. 如請求項12所述之系統,其中該請求儲存組件在該應用程式具有經分配記憶體之後,在一單獨通訊中自該應用程式接收分配元資料。
  19. 如請求項12所述之系統,其中該記憶體動作組件可採取動作,該等動作包括將記憶體內容調換至一調換檔、釋放先前經分配記憶體及請求一應用程式減小該應用程式之記憶體佔據面積。
  20. 一種電腦可讀取儲存媒體,該電腦可讀取儲存媒體包含 用於控制一電腦系統啟動一應用程式之指令,該應用程式之記憶體先前已藉由一主機修正,其中該等指令在執行之後使一處理器執行動作,該等動作包含:接收啟動之一應用程式請求;識別一或更多個先前經接收應用程式記憶體分配;在決定至少一個應用程式分配未就緒用以由該應用程式使用之後,分配該等未就緒的分配,以將該等分配置於由該應用程式預期的一狀態中;且使用由該應用程式提供的一填充函數來填充該等經分配記憶體內容,其中該應用程式向該主機提供足夠資訊,以允許該主機解除且再產生該等應用程式之記憶體分配;以及啟動該經請求應用程式且為該應用程式提供由該應用程式預期的該等記憶體分配。
TW101114221A 2011-06-20 2012-04-20 具有增強型應用程式元資料之記憶體管理器 TW201301029A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/163,741 US9558040B2 (en) 2011-06-20 2011-06-20 Memory manager with enhanced application metadata

Publications (1)

Publication Number Publication Date
TW201301029A true TW201301029A (zh) 2013-01-01

Family

ID=47354692

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101114221A TW201301029A (zh) 2011-06-20 2012-04-20 具有增強型應用程式元資料之記憶體管理器

Country Status (8)

Country Link
US (1) US9558040B2 (zh)
EP (1) EP2721480B1 (zh)
JP (1) JP6370218B2 (zh)
KR (1) KR101955737B1 (zh)
CN (1) CN103620548B (zh)
AR (1) AR086712A1 (zh)
TW (1) TW201301029A (zh)
WO (1) WO2012177579A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI752619B (zh) * 2019-09-17 2022-01-11 美商美光科技公司 存取儲存的元資料以識別儲存資料的記憶體裝置

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8627036B2 (en) * 2011-09-12 2014-01-07 Microsoft Corporation Memory management techniques
US9208082B1 (en) * 2012-03-23 2015-12-08 David R. Cheriton Hardware-supported per-process metadata tags
US20140379481A1 (en) * 2013-06-19 2014-12-25 Adobe Systems Incorporated Method and apparatus for targeting messages in desktop and mobile applications
CN103399822B (zh) * 2013-08-14 2017-05-24 上海斐讯数据通信技术有限公司 用于解决申请图片内存不足的内存分配方法及系统
US9832268B2 (en) 2014-08-28 2017-11-28 Software AG USA Inc. System, method, and medium for managing priority in requests to in-memory data grid (IMDG)
US10282747B2 (en) * 2015-06-02 2019-05-07 Adobe Inc. Using user segments for targeted content
US9983887B2 (en) 2015-06-05 2018-05-29 Apple Inc. Memory management of data processing systems
US10013198B2 (en) 2015-08-24 2018-07-03 International Business Machines Corporation Limiting memory consumption in a distributed environment at a group level
US10469671B2 (en) 2016-12-27 2019-11-05 At&T Mobility Ii Llc Network-based per-application data usage limitations
US10318888B2 (en) 2017-03-06 2019-06-11 International Business Machines Corporation Pre-backing virtual storage using historical learned data
WO2018236925A1 (en) 2017-06-19 2018-12-27 Rigetti & Co, Inc. QUANTICALLY DISTRIBUTED COMPUTING SYSTEM
US10368128B2 (en) 2017-08-11 2019-07-30 Microsoft Technology Licensing, Llc Memory allocation type for media buffer
US10877691B2 (en) * 2017-12-29 2020-12-29 Intel Corporation Stream classification based on logical regions
US20190370043A1 (en) * 2018-04-30 2019-12-05 Nutanix, Inc. Cooperative memory management
US11327551B2 (en) * 2019-02-14 2022-05-10 Micron Technology, Inc. Methods and apparatus for characterizing memory devices
US10963396B1 (en) 2019-09-17 2021-03-30 Micron Technology, Inc. Memory system for binding data to a memory namespace
US11269780B2 (en) 2019-09-17 2022-03-08 Micron Technology, Inc. Mapping non-typed memory access to typed memory access
US11494311B2 (en) 2019-09-17 2022-11-08 Micron Technology, Inc. Page table hooks to memory types

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6023712A (en) * 1997-07-30 2000-02-08 Quarterdeck Corporation Method and apparatus for brokering memory resources
US6058461A (en) 1997-12-02 2000-05-02 Advanced Micro Devices, Inc. Computer system including priorities for memory operations and allowing a higher priority memory operation to interrupt a lower priority memory operation
EP1320028A4 (en) 2000-05-30 2005-05-11 Inst Comp Based Software PROCESSING METHOD USING SYNCHRONIZATION STRUCTURE OF INFORMATION PROCESSOR
US6941437B2 (en) 2001-07-19 2005-09-06 Wind River Systems, Inc. Memory allocation scheme
US7069396B2 (en) * 2002-06-27 2006-06-27 Hewlett-Packard Development Company, L.P. Deferred memory allocation for application threads
US7406699B2 (en) 2003-04-02 2008-07-29 Microsoft Corporation Enhanced runtime hosting
US7032088B2 (en) 2003-08-07 2006-04-18 Siemens Corporate Research, Inc. Advanced memory management architecture for large data volumes
US7213084B2 (en) 2003-10-10 2007-05-01 International Business Machines Corporation System and method for allocating memory allocation bandwidth by assigning fixed priority of access to DMA machines and programmable priority to processing unit
KR100631782B1 (ko) * 2004-07-27 2006-10-11 삼성전자주식회사 객체지향 어플리케이션에서의 효율적인 메모리 관리 방법및 장치
JP2006107197A (ja) 2004-10-06 2006-04-20 Nec Corp メモリ制御方法およびプログラムならびに端末装置
KR20060033606A (ko) * 2004-10-15 2006-04-19 주식회사 팬택앤큐리텔 힙 메모리 관리장치 및 그 방법
US20060149914A1 (en) * 2004-12-30 2006-07-06 Doris Tom F Systems and methods for allocating data structures to memories
US7395385B2 (en) 2005-02-12 2008-07-01 Broadcom Corporation Memory management for a mobile multimedia processor
US20060275934A1 (en) * 2005-06-03 2006-12-07 William Pohl Management of computer processes
US8095931B1 (en) 2006-04-27 2012-01-10 Vmware, Inc. Controlling memory conditions in a virtual machine
JP2007323393A (ja) 2006-06-01 2007-12-13 Fuji Xerox Co Ltd 画像処理装置及びプログラム
US7827358B2 (en) 2007-01-07 2010-11-02 Apple Inc. Memory management methods and systems
US8341611B2 (en) 2007-04-11 2012-12-25 Apple Inc. Application interface on multiple processors
US8510743B2 (en) 2007-10-31 2013-08-13 Google Inc. Terminating computer applications
TWI438633B (zh) * 2007-11-29 2014-05-21 Ibm 記憶體管理之垃圾收集方法、其電腦程式產品,及其裝置
US8812809B2 (en) * 2008-06-10 2014-08-19 Oracle America, Inc. Method and apparatus for allocating memory for immutable data on a computing device
KR20090131142A (ko) * 2008-06-17 2009-12-28 재단법인서울대학교산학협력재단 메모리 관리 장치 및 방법
US20100070678A1 (en) * 2008-09-12 2010-03-18 Vmware, Inc. Saving and Restoring State Information for Virtualized Computer Systems
US8291192B2 (en) 2008-10-30 2012-10-16 Kyocera Document Solutions, Inc. Memory management system
JP5235751B2 (ja) * 2009-03-30 2013-07-10 株式会社日立製作所 仮想計算機を有する物理計算機

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI752619B (zh) * 2019-09-17 2022-01-11 美商美光科技公司 存取儲存的元資料以識別儲存資料的記憶體裝置

Also Published As

Publication number Publication date
EP2721480A2 (en) 2014-04-23
CN103620548A (zh) 2014-03-05
WO2012177579A3 (en) 2013-03-28
EP2721480A4 (en) 2016-05-25
AR086712A1 (es) 2014-01-15
KR101955737B1 (ko) 2019-03-07
KR20140035416A (ko) 2014-03-21
JP6370218B2 (ja) 2018-08-08
CN103620548B (zh) 2017-07-28
US20120324196A1 (en) 2012-12-20
WO2012177579A2 (en) 2012-12-27
US9558040B2 (en) 2017-01-31
EP2721480B1 (en) 2021-05-05
JP2014517434A (ja) 2014-07-17

Similar Documents

Publication Publication Date Title
TWI539280B (zh) 用於分析未經特定設計以提供記憶體分配資訊之應用程式及擷取記憶體分配資訊的方法、及其電腦系統和電腦可讀儲存媒體
TW201301029A (zh) 具有增強型應用程式元資料之記憶體管理器
TWI604378B (zh) 用於新應用程式之記憶體管理模型與介面
US11106579B2 (en) System and method to manage and share managed runtime memory for java virtual machine
US20160140035A1 (en) Memory management techniques
US20090187911A1 (en) Computer device with reserved memory for priority applications
US10521155B2 (en) Application management data
CN106547603B (zh) 减少golang语言系统垃圾回收时间的方法和装置
US20230266992A1 (en) Processor for managing resources using dual queues, and operating method thereof