TW201321980A - 追蹤一資料處理系統的記憶體使用率之方法 - Google Patents

追蹤一資料處理系統的記憶體使用率之方法 Download PDF

Info

Publication number
TW201321980A
TW201321980A TW101136089A TW101136089A TW201321980A TW 201321980 A TW201321980 A TW 201321980A TW 101136089 A TW101136089 A TW 101136089A TW 101136089 A TW101136089 A TW 101136089A TW 201321980 A TW201321980 A TW 201321980A
Authority
TW
Taiwan
Prior art keywords
memory
item
tracking
allocation
count
Prior art date
Application number
TW101136089A
Other languages
English (en)
Other versions
TWI456395B (zh
Inventor
Umesh S Vaishampayan
Daniel A Chimene
Daniel S Heller
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of TW201321980A publication Critical patent/TW201321980A/zh
Application granted granted Critical
Publication of TWI456395B publication Critical patent/TWI456395B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • 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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

本文中描述用於追蹤一資料處理系統之記憶體使用率之技術。根據一項實施例,一記憶體管理器用以基於表示分配給一用戶端的一記憶體區塊之一記憶體位址的一控制代碼在一記憶體分配表中執行一第一查找操作以識別一分配項目並自該分配項目擷取一追蹤項目指標。該記憶體管理器接著用以基於該追蹤項目指標在一記憶體追蹤表中執行一第二查找操作以識別一追蹤項目並將該追蹤項目之一記憶體分配計數遞增。該記憶體分配計數用以指示該用戶端引起一記憶體流失之一可能性。

Description

追蹤一資料處理系統的記憶體使用率之方法
本發明之實施例大體而言係關於資料處理系統。更特定言之,本發明之實施例係關於追蹤一資料處理系統之記憶體使用率之機制。
資料處理系統使用作業系統(OS)來管理電腦之硬體及軟體資源。OS為執行諸如以下任務之基本任務之軟體程式:控制及分配記憶體、對指令之處理進行優先排序、控制輸入及輸出器件、促進網路連接及管理檔案。OS亦提供應用程式介面(API)以使應用程式能夠與硬體及軟體資源以及與其他應用程式交互作用。
隨著愈來愈多服務變得可用於資料處理系統,在系統中執行的程式之數目已顯著地增加。此等程式中之每一者通常消耗特定數量之資源(諸如,記憶體)。一些程式可引起記憶體流失。舉例而言,一程式可分配記憶體之一區塊且一旦該程式被執行便不能適當地釋放該記憶體區塊。隨時間逝去,待分配給其他程式之可用記憶體變得愈來愈少。雖然記憶體器件之密度繼續增加,但記憶體容量仍非常有限。
通常,一系統監視多個執行中應用程式的記憶體使用率以確保所需之空閒記憶體容量的可用性。在一些系統中,當記憶體使用率達到一臨界等級時,該系統採取記憶體管理動作以增加空閒記憶體之大小,諸如啟動廢棄項目收集 程序以自不再執行之應用程式獲得分配之記憶體。該系統亦可諸如藉由簡單地終止選定之應用程式而將該應用程式作為目標。在一些情形中,識別哪一者引起記憶體流失以便進一步改良整個系統係有用的或重要的。通常,難以識別單一多用途程式(諸如,作業系統核心)內的記憶體流失之原因。然而,缺乏用以追蹤或精確定位(pinpoint)引起記憶體流失之違規者(offender)的有效機制。
本發明之實施例係作為實例而說明且不限於隨附圖式之諸圖,諸圖中相似參考數字指示類似元件。
下文將參考所論述之細節來描述本發明之各種實施例及態樣,且隨附圖式將說明各種實施例。以下描述及圖式說明本發明,且不應解釋為限制本發明。描述了眾多具體細節以提供對本發明之各種實施例的透徹理解。然而,在特定情況中,並未描述熟知或習知細節以便提供對本發明之實施例的簡明論述。
說明書中對「一項實施例」或「一實施例」之引用意謂結合該實施例所描述之特定特徵、結構或特性可包括於本發明之至少一項實施例中。在說明書中之各處出現的片語「在一項實施例中」未必全部指代同一實施例。
根據一些實施例,作業系統之記憶體管理器經組態以維持記憶體分配表(亦簡稱為分配表)及記憶體追蹤表(亦簡稱為追蹤表)以追蹤請求記憶體分配之用戶端或擁有者的記憶體分配及解除分配。在一項實施例中,分配表包括多個 項目,其中基於所分配之記憶體區塊的記憶體位址來索引每一項目。每一項目包括參照至追蹤表之項目的指標。追蹤表包括多個項目,其中藉由請求記憶體分配之用戶端或擁有者的識別符來索引每一項目。
當記憶體區塊分配給一用戶端並藉由表示所分配記憶體區塊之記憶體位址的一控制代碼(handle)參照時,一記憶體管理器經組態以基於控制代碼來查找分配表之分配項目以判定指向追蹤表之指標是否儲存於其中。若指標存在,則追蹤表之追蹤項目係基於自分配表擷取的指標來存取且追蹤項目之記憶體分配資訊被更新。在一項實施例中,回應於記憶體分配請求,追蹤項目之記憶體分配計數可遞增,且回應於記憶體解除分配請求,記憶體分配計數可遞減。記憶體分配計數可用以指示用戶端可請求記憶體區塊之分配且不適當地解除分配記憶體區塊(例如,記憶體流失)的可能性。
在一項實施例中,所分配記憶體區塊之用戶端或擁有者可由請求記憶體分配及/或解除分配的程式之可執行程式碼之序列或堆疊框的回溯追蹤表示。在一複雜之多用途程式中,回溯追蹤適用於較準確地識別程式之活動的具體子集。基於記憶體分配之控制代碼的雜湊值來索引分配表中之項目中之每一者。基於請求記憶體分配及/或記憶體解除分配之程式之回溯追蹤的雜湊值來索引追蹤表中之項目中之每一者。結果,記憶體管理器可基於回溯追蹤及其記憶體分配計數以有效方式精確定位可執行程式碼之哪一 (些)行可能引起記憶體流失。
圖1為說明根據本發明之一項實施例的用於追蹤記憶體使用率之系統的方塊圖。如圖1中所示之系統100可表示各種資料處理系統或器件。舉例而言,系統100可呈現用戶端機器,諸如,桌上型電腦、膝上型電腦、平板電腦、行動電話(例如,智慧型電話)、媒體播放器或其組合。或者,系統100可表示伺服器,諸如,網路伺服器(Web server)、應用伺服器或後端伺服器。參看圖1,系統100包括經由API通信地耦接至記憶體管理器103之一或多個程式101至102。記憶體管理器103可實施為作業系統之一部分,作業系統可為各種作業系統,諸如,可自California之Cupertino的Apple® Inc.得到的Mac OSTM或iOSTM、來自Washington之Redmond的Microsoft® Corporation的WindowsTM作業系統、Unix®或Linux®作業系統。程式101至102及/或記憶體管理器103可在使用者層級及/或作業系統之核心層級執行。舉例而言,程式101至102中之任一者可在使用者層級(應用程式)或在作業系統之核心層級(例如,器件驅動程式)執行。
在一項實施例中,記憶體管理器103經組態以維持具有記憶體分配表105及記憶體追蹤表106之記憶體使用率映射104。記憶體使用率映射104經組態以記錄記憶體使用率,諸如系統100內執行之程式(諸如,程式101至102)的記憶體分配及/或解除分配。記憶體使用率映射104可由系統記憶體(諸如,系統100之隨機存取記憶體(RAM))中之作業系統 來維持。
根據一項實施例,記憶體使用率映射104之分配表105及追蹤表106用以追蹤用戶端或擁有者之記憶體分配及解除分配。出於說明之目的而在圖2中展示分配表105及追蹤表106之實例。在一項實施例中,參看圖2,分配表105包括多個項目,其中基於所分配之記憶體區塊的記憶體位址201來索引每一項目。每一項目包括參照至追蹤表106之項目的指標203。分配表105之每一項目亦可包括其他選用之資訊,諸如,實際記憶體位址202。追蹤表106包括多個項目,其中藉由請求記憶體分配之用戶端或擁有者204之識別符來索引每一項目。追蹤表106之每一追蹤項目進一步包括諸如記憶體分配計數之記憶體分配資訊205及視情況諸如實際回溯追蹤206之其他資訊。應注意,僅出於說明之目的而描述如圖2中所示之分配表105及追蹤表106;亦可利用其他格式且更多或更少資訊可包括於其中。
返回參看圖1及圖2,當記憶體區塊分配給用戶端並藉由表示所分配記憶體區塊之記憶體位址的控制代碼參照時,記憶體分配器107經組態以基於控制代碼(例如,分配項目207之欄位201)查找分配表105之分配項目(例如,分配項目207)以判定指向追蹤表106之指標或連結是否已儲存於其中(例如,分配項目207之欄位203)。若指標存在,則追蹤表106之追蹤項目(例如,追蹤項目209)係基於自分配表105擷取的指標(例如,追蹤項目209之欄位204)來存取且追蹤項目之記憶體分配資訊(例如,追蹤項目209之欄位205)被 更新。在一項實施例中,記憶體分配資訊包括追蹤項目之記憶體分配計數,該計數可回應於記憶體分配請求而遞增。
根據一項實施例,當接收到解除分配藉由控制代碼參照之記憶體區塊的請求時,記憶體解除分配器108經組態以基於控制代碼(例如,分配項目208之欄位201)查找分配表105之分配項目(例如,分配項目208)並擷取參照追蹤表106之追蹤項目(例如,追蹤項目209)的指標(例如,分配項目208之欄位203)。記憶體解除分配器108接著更新記憶體解除分配資訊(例如,追蹤項目209之欄位205),例如,將追蹤項目之記憶體分配計數遞減。記憶體分配計數可用以指示用戶端可請求記憶體區塊之分配且當其被執行時不適當地解除分配記憶體區塊(例如,記憶體流失)的可能性。在此實施例中,正記憶體分配計數可指示一程式可分配比歷經一段時間解除分配之記憶體區塊多的記憶體區塊。具有較高記憶體分配計數之程式可被視為最高或主要記憶體流失可疑者。在一項實施例中,出於分析及/或報告之目的,記憶體管理器103可(例如)基於一列一或多個最高記憶體流失可疑者的各別記憶體分配計數而維持關於該一或多個最高記憶體流失可疑者的資訊。舉例而言,如圖8中所示,使用者可基於來自分配表105及追蹤表106之資訊而獲得一或多個最高記憶體流失可疑者之回溯追蹤資訊並出於分析之目的發送該資訊至其他設施。
圖3為說明根據本發明之一項實施例的用於分配記憶體 區塊之方法的流程圖。舉例而言,方法300可由圖1之記憶體管理器103執行。參看圖3,在區塊301處,記憶體管理器自用戶端接收對於分配記憶體之區塊的請求。回應於該請求,在區塊302處,記憶體管理器分配所請求記憶體區塊並獲得所分配記憶體區塊之控制代碼(例如,起始記憶體位址)。在區塊303處,記憶體管理器將記憶體分配資訊填充於追蹤表中與用戶端相關聯之項目中。在一項實施例中,追蹤項目之記憶體分配計數遞增。用戶端可藉由請求記憶體分配之可執行程式碼之序列或堆疊框的回溯追蹤來表示。在區塊304處,追蹤項目之位址儲存於對應於分配表中之記憶體分配之控制代碼的分配項目中。此後,在區塊305處,記憶體分配之控制代碼傳回至用戶端以完成記憶體請求程序。圖5為表示實施圖3之方法300之程式的偽碼。
圖4為說明根據本發明之一項實施例的用於解除分配記憶體區塊之方法的流程圖。舉例而言,方法400可由圖1之記憶體管理器103執行。參看圖4,在區塊401處,記憶體管理器自用戶端接收對於解除分配藉由控制代碼參照的記憶體之區塊的請求。回應於該請求,在區塊402處,記憶體管理器經組態以將記憶體區塊釋放回至記憶體集區。在區塊403處,記憶體管理器基於控制代碼而查找記憶體分配表以定位分配項目並識別對應於控制代碼之追蹤表之追蹤項目指標。在區塊404處,基於追蹤項目指標,記憶體管理器更新儲存於由追蹤項目指標連結之追蹤項目中的記 憶體分配/解除分配資訊,例如,包括將追蹤項目之記憶體分配計數遞減。圖6為表示實施圖4之方法400之程式的偽碼。
如上文描述之記憶體流失偵測機制可實施為作業系統之一部分或一外掛程式或作業系統之核心的延伸。根據一項實施例,可僅當存在某一者正引起記憶體流失之可能性時啟動記憶體流失偵測機制。最初根據一項實施例,記憶體流失偵測機制不活動直至可用於分配之剩餘記憶體降低至預定臨限值之下為止。通常,當資料處理系統開機時,存在大量可用於分配給程式之資源或記憶體。在此等情況下,無需追蹤記憶體流失。當空閒而能夠自由分配之可用記憶體降低至預定臨限值之下時,根據一項實施例,啟動記憶體流失偵測機制。通常,資料處理系統可具有較少記憶體流失,其中在不實質上影響系統之效能的情況下可用資源足以補償記憶體流失。結果,可能無需偵測記憶體流失。因此,記憶體流失偵測機制僅當需要最小化與其相關聯之資源消耗時啟動。
如上文所描述,當接收到對於分配記憶體之請求時,此記憶體分配記錄於上文陳述之分配表及追蹤表中。在一項實施例中,回應於記憶體分配請求,在分配表中檢查與所分配記憶體之控制代碼相關聯的項目且在追蹤表中檢查與所分配記憶體之擁有者相關聯的項目。因此更新諸如追蹤項目之記憶體分配計數的記憶體分配資訊。對於所分配記憶體區塊之特定控制代碼,若分配表或追蹤表中無對應項 目,則(例如)藉由將追蹤項目指標儲存於分配表之項目中及將追蹤表中之相關聯追蹤項目中的記憶體分配計數遞增而在分配表或追蹤表中分配或建立新項目。
類似地,當接收到對於解除分配記憶體區塊之請求時,相關聯之記憶體分配計數遞減且分配表之相關聯分配項目中的對應追蹤項目指標可重設為預定值,諸如空值(NULL)或零。若特定追蹤項目之記憶體分配計數達到零,則其意謂特定追蹤項目空閒而能夠自由分配給另外某一者。類似地,當分配表之特定分配項目之追蹤項目指標不含有有效追蹤項目指標(例如,空值或零)時,該特定分配項目空閒而能夠自由分配。根據一項實施例,為了維持分配表及/或追蹤表之相對小的大小且亦為了再生與簿記相關聯之CPU額外負擔,僅記錄記憶體分配請求之樣本。舉例而言,N個記憶體分配中可記錄一個,此可基於一策略而為可組態的。以此方式,雖然特定記憶體流失違規者可能不會被捕獲;然而,頻繁記憶體流失違規者將最終被捕獲。此組態可俘獲主要的記憶體流失違規者,同時消耗較少系統資源或處理能力來用於記憶體流失偵測。
在一項實施例中,所分配之記憶體區塊的用戶端或擁有者可藉由請求記憶體分配及/或解除分配的可執行程式碼之序列的回溯追蹤(例如,堆疊框之回溯追蹤)表示。基於記憶體分配之控制代碼的雜湊值來索引分配表中之項目中的每一者。基於請求記憶體分配及/或記憶體解除分配的程式之回溯追蹤的雜湊值來索引追蹤表中之項目中的每一 者。結果,記憶體管理器可基於回溯追蹤及其記憶體分配計數精確定位可執行程式碼之哪些行可能引起記憶體流失。
返回參看圖1及圖2,程式101至102中之任一者之回溯追蹤可由回溯追蹤模組109獲得並提供至記憶體管理器103。回溯追蹤模組109可實施為作業系統之核心的延伸,其經由API允許記憶體管理器獲得請求記憶體分配或解除分配之當前執行緒的堆疊框之回溯追蹤。回溯追蹤之實例展示於圖8中,其可由分析模組110作為記憶體使用率報告111之一部分(例如,記憶體流失報告)來報告。記憶體使用率報告111可進一步動態地或離線分析以識別當前安裝於系統100中之程式中的哪一者引起最多記憶體流失。
現參看圖2,分配表105及追蹤表106可按各種形式(諸如,陣列、資料結構、資料物件或其組合(例如,資料結構之連結清單))來實施。在一項實施例中,分配表105包括基於與所分配記憶體區塊相關聯的記憶體位址之雜湊值來索引的多個項目。舉例而言,當分配記憶體區塊時,獲得記憶體區塊之控制代碼。分配表105之項目係基於控制代碼之雜湊來識別,其中可使用各種雜湊函式或演算法(諸如,Jenkins、FNV、SHA-1或MD5雜湊演算法)產生雜湊。亦即,一旦獲得控制代碼之雜湊值,便將雜湊值用作欄位201中之索引以定位分配表105中之項目。在一項實施例中,分配表105之每一項目進一步包括用以儲存記憶體分配之實際控制代碼或記憶體位址的欄位202及用以儲存參 照至追蹤表106之追蹤項目之指標的欄位203。其他資訊亦可儲存於分配表105中。
類似地,根據一項實施例,追蹤表106包括基於表示請求記憶體分配或解除分配的用戶端或擁有者之回溯追蹤的雜湊值來索引的多個項目。舉例而言,當記憶體區塊經分配以用於用戶端時,自作業系統(例如,經由回溯追蹤模組109)獲得用戶端之回溯追蹤。追蹤表106之項目係基於回溯追蹤之雜湊來識別,其中可使用各種雜湊函式或演算法(諸如,Jenkins、FNV、SHA-1或MD5雜湊演算法)產生雜湊。亦即,一旦獲得回溯追蹤之雜湊值,便將雜湊值用作欄位204之索引以定位追蹤表106中之項目。在一項實施例中,追蹤表106之每一項目進一步包括用以儲存與項目相關聯之記憶體分配資訊(諸如,記憶體分配計數)的欄位205。追蹤表106之每一項目進一步包括用以儲存其他資訊(諸如,與項目相關聯之實際回溯追蹤)之欄位206。其他資訊亦可儲存於追蹤表106中。
如圖2中所示,藉由將控制代碼之雜湊用作分配表105之索引及將回溯追蹤之雜湊用作追蹤表106之索引,根據一項實施例,可按合理大小維持分配表105及追蹤表106之大小。亦即,分配表105及追蹤表106中之每一者包括分別基於控制代碼及回溯追蹤之雜湊而識別或定位的固定數目之項目或槽位(slot)。然而,不同值(例如,控制代碼或回溯追蹤)之雜湊可產生相同雜湊值(例如,雜湊衝突)。結果,有時分配表105之多個項目(諸如項目207至208)可參照至追 蹤表106之同一追蹤項目209。根據一些實施例,在特定情況下,為了限制由分配表105及追蹤表106消耗的資源,特定記憶體分配可不記錄於分配表105及追蹤表106中。系統可僅將至多全部數目個項目之記憶體分配記錄於分配表105及追蹤表106中。在一些情形中,當記錄新記憶體分配時,視情況而定,佔用同一槽位之早先記錄之記憶體分配可被自表逐出或在表中被覆寫。如上文所描述,雖然一些記憶體流失違規者可能不會在特定時間點被捕獲;然而,頻繁記憶體流失違規者將最終被捕獲。
圖7為說明根據本發明之另一實施例的用於分配記憶體之方法的流程圖。方法700可由圖1之記憶體管理器103執行,記憶體管理器103可實施為軟體、硬體或其組合中的處理邏輯。參看圖2及圖7,回應於藉由控制代碼參照之記憶體分配,在區塊701處,處理邏輯獲得控制代碼之雜湊及請求記憶體分配之程式的回溯追蹤之雜湊,並查找分配表105及追蹤表106。在區塊702處,處理邏輯判定分配表105之分配項目是否空閒而能夠自由分配給由回溯追蹤表示的用戶端。在一項實施例中,處理邏輯使用控制代碼之雜湊作為索引來在分配表105之欄位201中查找以定位分配項目。處理邏輯接著檢查分配項目之欄位203以判定是否存在儲存於其中之追蹤項目指標。若無儲存於其中之追蹤項目指標,則分配項目被視為空閒而能夠自由使用。
若在區塊703處判定分配項目係空閒的,則處理邏輯接著使用回溯追蹤之雜湊作為欄位204中之索引來查找追蹤 表106以定位追蹤項目。處理邏輯接著檢查追蹤項目之欄位205以判定追蹤項目是否為空閒的。在一項實施例中,若欄位205含有特定記憶體分配資訊(在此實例中,非零記憶體分配計數),則追蹤項目被佔用;否則,追蹤項目係空閒的。若判定追蹤項目係空閒的(例如,當前記憶體分配為新記憶體分配且被首次記錄),則在區塊704處,處理邏輯將必要資訊填充於分配表105及追蹤表106兩者中。在一項實施例中,處理邏輯將實際記憶體控制代碼儲存於分配項目之欄位202中並將相關聯追蹤項目之記憶體位址儲存於分配表105中之分配項目的欄位203中。另外,處理邏輯進一步將實際回溯追蹤之至少一部分儲存於追蹤項目之欄位206中並將追蹤表106中之追蹤項目之欄位205中的記憶體分配計數遞增。在一項實施例中,為了限制追蹤表106之大小,回溯追蹤之僅有限量資訊(例如,預定數目(諸如,15個)之程式碼行或堆疊框)儲存於追蹤項目之欄位206中。藉由將追蹤項目之記憶體位址儲存於分配項目之欄位203中,分配項目被視為被佔用。類似地,藉由將非零記憶體分配計數儲存於追蹤項目之欄位205中,追蹤項目變得被佔用。
根據一項實施例,若在區塊703處判定追蹤項目被佔用(例如,非零記憶體分配計數),則在區塊705處,處理邏輯判定追蹤項目是否與同一擁有者或用戶端相關聯。在一項實施例中,處理邏輯將請求記憶體分配的當前執行緒之實際回溯追蹤與當前儲存於追蹤項目之欄位206中的回溯追 蹤作比較。若兩個回溯追蹤匹配,則追蹤項目由同一擁有者擁有。若追蹤項目由同一擁有者擁有,則在區塊706處,儲存於追蹤項目之欄位205中的記憶體分配計數遞增。在區塊707處,追蹤項目之記憶體位址儲存於分配項目之欄位203中,此進而指示分配項目現被佔用。
注意此時,可存在參照至同一追蹤項目之多個分配項目。舉例而言,若追蹤項目之記憶體分配計數為二,則在分配表105中可存在與追蹤表106之對應追蹤項目相關聯的至少兩個分配項目。亦即,擁有者可能已被分配多個記憶體區塊而不釋放其中之一些。舉例而言,參看圖2,假定由回溯追蹤表示的擁有者被分配第一記憶體區塊,此產生參照至追蹤項目209之分配項目207(基於第一控制代碼)。隨後,同一擁有者(例如,同一回溯追蹤)分配第二記憶體區塊,此產生參照至同一追蹤項目209(因為同一回溯追蹤)之分配項目208(基於第二控制代碼)。結果,分配項目207至208兩者參照記憶體分配計數為二之同一追蹤項目209。
根據一項實施例,若在區塊702處判定分配項目被佔用,則在區塊708處,處理邏輯檢查由分配項目參照之追蹤項目以判定追蹤項目是否由同一擁有者擁有(藉由比較如上文所陳述之回溯追蹤)。另外,處理邏輯可進一步比較實際控制代碼與儲存於分配項目之欄位202中的控制代碼以判定記憶體分配是否與已記錄之記憶體分配相同。若其為同一擁有者或同一控制代碼,則處理邏輯可跳過處理當前記憶體分配,因為其已被處理。若其不為同一擁有 者,則在區塊709處,新追蹤項目自追蹤表106分配給新擁有者。另外,欄位203中之追蹤項目指標係以新追蹤項目之位址替代且新追蹤項目之記憶體分配計數遞增。應注意分配項目現連結至新追蹤項目而非舊追蹤項目。在區塊710處,追蹤表106中的舊追蹤項目之記憶體分配計數遞減。
圖9為資料處理系統之方塊圖,該資料處理系統可與本發明之一項實施例一起使用。舉例而言,系統900可用作如圖1中所示之系統100之一部分。注意雖然圖9說明電腦系統之各種組件,但其不意欲表示互連該等組件之任一特定架構或方式;因而細節不與本發明密切相關。亦應瞭解網路電腦、手持型電腦、蜂巢式電話及具有較少組件或也許較多組件的其他資料處理系統亦可與本發明一起使用。圖9之電腦系統可(例如)為Apple Macintosh電腦或MacBook、IBM相容PC或電腦伺服器。
如圖9中所示,電腦系統900(其為資料處理系統之形式)包括匯流排或互連902,其耦接至一或多個微處理器903及ROM 907、揮發性RAM 905及非揮發性記憶體906。微處理器903耦接至快取記憶體904。匯流排902將此等各種組件互連在一起且亦將此等組件903、907、905及906與顯示控制器及顯示器件908互連,以及與輸入/輸出(I/O)器件910互連,輸入/輸出(I/O)器件910可為滑鼠、鍵盤、數據機、網路介面、印表機及此項技術中熟知的其他器件。
通常,輸入/輸出器件910經由輸入/輸出控制器909耦接 至系統。揮發性RAM 905通常實施為連續需要電力以便再新或維持記憶體中之資料的動態RAM(DRAM)。非揮發性記憶體906通常為磁性硬碟機、磁性光碟機、光碟機或DVD RAM或甚至在電力自系統移除之後仍維持資料的其他類型之記憶體系統。通常,非揮發性記憶體亦將為隨機存取記憶體,但此並非所需的。
雖然圖9展示非揮發性記憶體為直接耦接至資料處理系統中之其餘組件的本端器件,但本發明可利用遠離系統之非揮發性記憶體;諸如,經由網路介面(諸如,數據機或乙太網路介面)耦接至資料處理系統的網路儲存器件。如此項技術中所熟知,匯流排902可包括經由各種橋接器、控制器及/或配接器彼此連接的一或多個匯流排。在一項實施例中,I/O控制器909包括用於控制USB(通用串列匯流排)周邊設備之USB配接器。或者,I/O控制器909可包括用於控制火線器件之IEEE-1394配接器(亦稱為火線配接器)。
已依據對電腦記憶體內之資料位元的操作之演算法及符號表示呈現先前[實施方式]之一些部分。此等演算法描述及表示為熟習資料處理技術者用以向其他熟習此項技術者最有效地傳達其研究之要點的手段。在此且大體而言設想演算法為導致所要結果之操作之自相一致序列。該等操作為需要物理量之實體操縱的操作。
然而,應記住,所有此等及類似術語應與適當物理量相關聯且僅為應用於此等量之便利標記。除非另外具體陳述為自上文論述顯而易見,否則應瞭解在整個描述中,利用 諸如下文在申請專利範圍中陳述之術語的術語之論述指代電腦系統或類似電子計算器件之動作及程序,該電腦系統或類似電子計算器件將表示為電腦系統之暫存器及記憶體內的物理(電子)量之資料操縱及變換成類似地表示為電腦系統記憶體或暫存器或其他此類資訊儲存、傳輸或顯示器件內之物理量之其他資料。
圖中所示之技術可使用在一或多個電子器件上儲存並執行之程式碼及資料來實施。此等電子器件使用電腦可讀媒體(諸如,非暫時電腦可讀儲存媒體(例如,磁碟;光碟;隨機存取記憶體;唯讀記憶體;快閃記憶體器件;相變記憶體)及暫時電腦可讀傳輸媒體(例如,電、光學、聲學或其他形式之傳播信號,諸如,載波、紅外信號、數位信號))儲存並傳達(在內部及/或經由網路與其他電子器件)程式碼及資料。
先前圖中描繪之程序或方法可由包含硬體(例如,電路、專用邏輯等)、韌體、軟體(例如,體現於非暫時電腦可讀媒體上)或兩者之組合的處理邏輯執行。雖然上文依據一些順序操作描述程序或方法,但應瞭解所描述操作中之一些可按不同次序執行。此外,一些操作可並列而非順序地執行。
在前述說明書中,本發明之實施例已關於其具體例示性實施例而描述。將顯而易見的時,在不脫離如隨附申請專利範圍中陳述的本發明之更廣泛精神及範疇之情況下,可對本發明進行各種修改。因此,應按說明性意義而非限制 性意義來看待本說明書及圖式。
100‧‧‧系統
101‧‧‧程式
102‧‧‧程式
103‧‧‧記憶體管理器
104‧‧‧記憶體使用率映射
105‧‧‧記憶體分配表
106‧‧‧記憶體追蹤表
107‧‧‧記憶體分配器
108‧‧‧記憶體解除分配器
109‧‧‧回溯追蹤模組
110‧‧‧分析模組
111‧‧‧記憶體使用率報告
201‧‧‧記憶體位址/分配項目之欄位
202‧‧‧實際記憶體位址
203‧‧‧指標/分配項目之欄位
204‧‧‧用戶端或擁有者/追蹤項目之欄位
205‧‧‧追蹤項目之欄位
206‧‧‧實際回溯追蹤
207‧‧‧分配項目
208‧‧‧分配項目
209‧‧‧追蹤項目
900‧‧‧系統
902‧‧‧匯流排或互連
903‧‧‧微處理器
904‧‧‧快取記憶體
905‧‧‧揮發性RAM
906‧‧‧非揮發性記憶體
907‧‧‧ROM
908‧‧‧顯示控制器及顯示器件
909‧‧‧輸入/輸出控制器
910‧‧‧輸入/輸出器件
圖1為說明根據本發明之一項實施例的用於追蹤記憶體使用率之系統的方塊圖。
圖2為說明根據本發明之一項實施例的分配表及追蹤表之實例的方塊圖。
圖3為說明根據本發明之一項實施例的用於分配記憶體區塊之方法的流程圖。
圖4為說明根據本發明之一項實施例的用於解除分配記憶體區塊之方法的流程圖。
圖5為根據本發明之一項實施例的表示實施記憶體分配之程序的程式之偽碼。
圖6為根據本發明之一項實施例的表示實施記憶體解除分配之程序的程式之偽碼。
圖7為說明根據本發明之另一實施例的用於分配記憶體區塊之方法的流程圖。
圖8為說明可與本發明之一實施例一起使用之圖形使用者介面的螢幕擷取畫面。
圖9為可與本發明之一項實施例一起使用之資料處理系統的方塊圖。
100‧‧‧系統
101‧‧‧程式
102‧‧‧程式
103‧‧‧記憶體管理器
104‧‧‧記憶體使用率映射
105‧‧‧記憶體分配表
106‧‧‧記憶體追蹤表
107‧‧‧記憶體分配器
108‧‧‧記憶體解除分配器
109‧‧‧回溯追蹤模組
110‧‧‧分析模組
111‧‧‧記憶體使用率報告

Claims (20)

  1. 一種用於管理記憶體之電腦實施之方法,該方法包含:基於表示分配給一用戶端之一記憶體區塊之一記憶體位址的一控制代碼在一記憶體分配表中執行一第一查找操作以識別一分配項目並自該分配項目擷取一追蹤項目指標;及基於該追蹤項目指標在一記憶體追蹤表中執行一第二查找操作以識別一追蹤項目並將該追蹤項目之一記憶體分配計數遞增,其中該記憶體分配計數用以指示該用戶端引起一記憶體流失之一可能性。
  2. 如請求項1之方法,其中該用戶端係經由一程式之可執行程式碼之一序列的一回溯追蹤來識別,且其中基於該回溯追蹤之一雜湊值在該記憶體追蹤表中索引該追蹤項目。
  3. 如請求項1之方法,其中基於該控制代碼之一雜湊值來索引該記憶體分配表之該分配項目。
  4. 如請求項1之方法,其進一步包含:檢查該分配項目以藉由判定該分配項目是否含有一追蹤項目指標而判定該分配項目是否空閒而能夠自由使用;及若該分配項目係空閒的,則以該記憶體追蹤表之該追蹤項目的一位址更新該分配項目。
  5. 如請求項4之方法,其進一步包含:若該分配項目係空閒的,則檢查該記憶體追蹤表之該 追蹤項目以判定該記憶體分配計數是否大於一預定值;及若該記憶體分配計數大於該預定值,則判定該用戶端是否為該記憶體追蹤表之該追蹤項目的同一擁有者,其中若該用戶端為該追蹤項目之同一擁有者,則該追蹤項目之該記憶體分配計數遞增。
  6. 如請求項4之方法,其進一步包含:若該分配項目不空閒,其參照至一現有追蹤項目,則判定該用戶端是否為該記憶體追蹤表之該追蹤項目之同一擁有者;若該用戶端並非為同一擁有者,則將該現有追蹤項目之一記憶體分配計數遞減;及以該追蹤項目之一位址更新該記憶體分配表之該分配項目。
  7. 如請求項1之方法,其進一步包含:回應於對於解除分配由一第二控制代碼識別之一第二記憶體區塊的一請求,基於該第二控制代碼自來自該記憶體分配表之一第二分配項目擷取一第二追蹤項目指標;及基於該第二追蹤項目指標將該記憶體追蹤表之一第二追蹤項目的一記憶體分配計數遞減。
  8. 如請求項1之方法,其中該第一查找操作及該第二查找操作係僅對記憶體分配請求之樣本執行。
  9. 一種機器可讀儲存媒體,其中儲存有指令,該等指令在由一機器執行時,使該機器執行一用於管理記憶體之方 法,該方法包含:基於表示分配給一用戶端之一記憶體區塊之一記憶體位址的一控制代碼在一記憶體分配表中執行一第一查找操作以識別一分配項目並自該分配項目擷取一追蹤項目指標;及基於該追蹤項目指標在一記憶體追蹤表中執行一第二查找操作以識別一追蹤項目並將該追蹤項目之一記憶體分配計數遞增,其中該記憶體分配計數用以指示該用戶端引起一記憶體流失之一可能性。
  10. 如請求項9之機器可讀儲存媒體,其中該用戶端係經由一程式之可執行程式碼之一序列的一回溯追蹤來識別,且其中基於該回溯追蹤之一雜湊值在該記憶體追蹤表中索引該追蹤項目。
  11. 如請求項9之機器可讀儲存媒體,其中基於該控制代碼之一雜湊值來索引該記憶體分配表之該分配項目。
  12. 如請求項9之機器可讀儲存媒體,其中該方法進一步包含:檢查該分配項目以藉由判定該分配項目是否含有一追蹤項目指標而判定該分配項目是否空閒而能夠自由使用;及若該分配項目係空閒的,則以該記憶體追蹤表之該追蹤項目的一位址更新該分配項目。
  13. 如請求項12之機器可讀儲存媒體,其中該方法進一步包含: 若該分配項目係空閒的,則檢查該記憶體追蹤表之該追蹤項目以判定該記憶體分配計數是否大於一預定值;及若該記憶體分配計數大於該預定值,則判定該用戶端是否為該記憶體追蹤表之該追蹤項目的同一擁有者,其中若該用戶端為該追蹤項目之同一擁有者,則該追蹤項目之該記憶體分配計數遞增。
  14. 如請求項12之機器可讀儲存媒體,該方法進一步包含:若該分配項目不空閒,其參照至一現有追蹤項目,則判定該用戶端是否為該記憶體追蹤表之該追蹤項目之同一擁有者;若該用戶端並非為同一擁有者,則將該現有追蹤項目之一記憶體分配計數遞減;及以該追蹤項目之一位址更新該記憶體分配表之該分配項目。
  15. 一種資料處理系統,其包含:一記憶體,其用以儲存一記憶體分配表及一記憶體追蹤表;及一記憶體分配模組,其用以基於表示分配給一用戶端之一記憶體區塊之一記憶體位址的一控制代碼在一記憶體分配表中執行一第一查找操作以識別一分配項目並自該分配項目擷取一追蹤項目指標,其中該記憶體分配模組經組態以基於該追蹤項目指標在該記憶體追蹤表中執行一第二查找操作以識別一追蹤項目並將該追蹤項目之一記憶體分配計數遞增,其中該記憶體分配計數用以指 示該用戶端引起一記憶體流失之一可能性。
  16. 如請求項15之系統,其中該用戶端係經由一程式之可執行程式碼之一序列的一回溯追蹤來識別,且其中基於該回溯追蹤之一雜湊值在該記憶體追蹤表中索引該追蹤項目。
  17. 如請求項15之系統,其中基於該控制代碼之一雜湊值來索引該記憶體分配表之該分配項目。
  18. 如請求項15之系統,其中該記憶體分配模組經組態以:檢查該分配項目以藉由判定該分配項目是否含有一追蹤項目指標而判定該分配項目是否空閒而能夠自由使用;且若該分配項目係空閒的,則以該記憶體追蹤表之該追蹤項目的一位址更新該分配項目。
  19. 如請求項18之系統,其中該記憶體分配模組經組態以:若該分配項目係空閒的,則檢查該記憶體追蹤表之該追蹤項目以判定該記憶體分配計數是否大於一預定值;且若該記憶體分配計數大於該預定值,則判定該用戶端是否為該記憶體追蹤表之該追蹤項目的同一擁有者,其中若該用戶端為該追蹤項目之同一擁有者,則該追蹤項目之該記憶體分配計數遞增。
  20. 如請求項19之系統,其中該記憶體分配模組經組態以:若該分配項目不空閒,其參照至一現有追蹤項目,則判定該用戶端是否為該記憶體追蹤表之該追蹤項目之同一擁有者;且 若該用戶端並非為同一擁有者,則將該現有追蹤項目之一記憶體分配計數遞減;及以該追蹤項目之一位址更新該記憶體分配表之該分配項目。
TW101136089A 2011-11-18 2012-09-28 追蹤一資料處理系統的記憶體使用率之方法 TWI456395B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/300,144 US8626993B2 (en) 2011-11-18 2011-11-18 Method for tracking memory usages of a data processing system

Publications (2)

Publication Number Publication Date
TW201321980A true TW201321980A (zh) 2013-06-01
TWI456395B TWI456395B (zh) 2014-10-11

Family

ID=47044823

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101136089A TWI456395B (zh) 2011-11-18 2012-09-28 追蹤一資料處理系統的記憶體使用率之方法

Country Status (7)

Country Link
US (2) US8626993B2 (zh)
EP (1) EP2657844B1 (zh)
JP (1) JP5425286B2 (zh)
KR (1) KR101357397B1 (zh)
CN (1) CN103123604B (zh)
TW (1) TWI456395B (zh)
WO (1) WO2013074201A1 (zh)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8959442B2 (en) * 2010-06-11 2015-02-17 Microsoft Corporation Memory allocation visualization for unmanaged languages
US10417121B1 (en) * 2011-12-19 2019-09-17 Juniper Networks, Inc. Monitoring memory usage in computing devices
US8707108B1 (en) 2012-01-20 2014-04-22 Amazon Technologies, Inc. Detecting memory failures in computing systems
US9275229B2 (en) * 2012-03-15 2016-03-01 Mandiant, Llc System to bypass a compromised mass storage device driver stack and method thereof
GB2506614A (en) * 2012-10-03 2014-04-09 Ibm Extracting core data for a summary dump file based upon most recent trace data entries
US9298521B1 (en) * 2013-04-29 2016-03-29 Seagate Technology Llc Command sets and functions
US9164872B2 (en) * 2013-05-22 2015-10-20 Sap Se Tracking of program objects during request processing
US9424027B2 (en) 2013-07-29 2016-08-23 Ralph Moore Message management system for information transfer within a multitasking system
US9690687B2 (en) * 2013-12-17 2017-06-27 International Business Machines Corporation Dynamic allocation of trace array timestamp data
CN104750605B (zh) * 2013-12-30 2018-08-14 伊姆西公司 将内核对象信息包括在用户转储中
WO2015192045A2 (en) 2014-06-13 2015-12-17 Pivotal Software, Inc. Precisely tracking memory usage in multi-process computing environment
JP6428005B2 (ja) * 2014-07-10 2018-11-28 富士通株式会社 情報処理装置,情報処理方法及び情報処理プログラム
CN105302734B (zh) * 2014-07-22 2018-04-06 北京畅游天下网络技术有限公司 内存管理系统和方法
CN105446871B (zh) * 2014-08-26 2018-08-17 华为技术有限公司 一种资源泄漏检测方法、装置及系统
US9471237B1 (en) 2015-02-04 2016-10-18 Amazon Technologies, Inc. Memory consumption tracking
US10757175B2 (en) * 2015-02-10 2020-08-25 Vmware, Inc. Synchronization optimization based upon allocation data
CN106294189B (zh) * 2015-05-25 2020-09-25 中兴通讯股份有限公司 内存碎片整理方法及装置
US10942683B2 (en) * 2015-10-28 2021-03-09 International Business Machines Corporation Reducing page invalidation broadcasts
CN105260314B (zh) * 2015-11-03 2018-06-29 上海斐讯数据通信技术有限公司 内存泄漏的监测方法
EP3200080B1 (en) * 2015-12-16 2021-12-22 Tata Consultancy Services Limited Methods and systems for memory suspect detection
WO2017131780A1 (en) * 2016-01-29 2017-08-03 Hewlett Packard Enterprise Development Lp Identifying object modifications
US20170249176A1 (en) * 2016-02-26 2017-08-31 Red Hat, Inc. Systems and methods for configuration knowledge search
US10223295B2 (en) * 2016-03-10 2019-03-05 Microsoft Technology Licensing, Llc Protected pointers
US11061572B2 (en) 2016-04-22 2021-07-13 Advanced Micro Devices, Inc. Memory object tagged memory monitoring method and system
US10037166B2 (en) * 2016-08-03 2018-07-31 Ge Aviation Systems Llc Tracking memory allocation
US10180799B2 (en) * 2017-02-02 2019-01-15 Microsoft Technology Licensing, Llc Efficient retrieval of memory values during trace replay
US10331446B2 (en) 2017-05-23 2019-06-25 International Business Machines Corporation Generating and verifying hardware instruction traces including memory data contents
US11074200B2 (en) * 2017-12-15 2021-07-27 Intel Corporation Use-after-free exploit prevention architecture
KR102536266B1 (ko) * 2018-08-02 2023-05-25 삼성전자주식회사 메모리 누수 검출 방법 및 그 전자 장치
US11720993B2 (en) * 2018-09-21 2023-08-08 Advanced Micro Devices, Inc. Dynamic kernel memory space allocation
US10817413B2 (en) 2018-12-11 2020-10-27 Nxp Usa, Inc. Hardware-based memory management for system-on-chip (SoC) integrated circuits that identify blocks of continuous available tokens needed to store data
CN110162449A (zh) * 2019-03-26 2019-08-23 北京海益同展信息科技有限公司 互联网数据中心巡检过程中数据存储方法和装置
US11307923B2 (en) * 2019-07-23 2022-04-19 Vmware, Inc. Memory leak detection
CN111258847B (zh) * 2020-01-13 2023-08-22 北京字节跳动网络技术有限公司 一种文件句柄监控及分析方法、装置、介质和设备
US11507559B2 (en) * 2020-05-25 2022-11-22 Hewlett Packard Enterprise Development Lp Object sharing by entities using a data structure
US11442832B2 (en) * 2020-11-24 2022-09-13 Hewlett Packard Enterprise Development Lp Managing synchronized reboot of a system

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0962565A (ja) * 1995-08-30 1997-03-07 Matsushita Graphic Commun Syst Inc メモリ管理方法およびメモリ管理装置
US5689707A (en) * 1995-12-04 1997-11-18 Ncr Corporation Method and apparatus for detecting memory leaks using expiration events and dependent pointers to indicate when a memory allocation should be de-allocated
JP3735484B2 (ja) * 1999-04-08 2006-01-18 日本電気株式会社 メモリリーク検出システム、メモリリーク検出方法及び記録媒体
US6658652B1 (en) 2000-06-08 2003-12-02 International Business Machines Corporation Method and system for shadow heap memory leak detection and other heap analysis in an object-oriented environment during real-time trace processing
US20020163913A1 (en) 2001-05-07 2002-11-07 Jintae Oh Pointer management and content matching packet classification
JP2002343064A (ja) 2001-05-17 2002-11-29 Fujitsu Ltd 記録再生装置及び方法
JP4157294B2 (ja) 2001-11-08 2008-10-01 富士通株式会社 欠陥ファイルの修復を可能とするファイルシステム
CN1248114C (zh) * 2002-06-20 2006-03-29 华为技术有限公司 一种软件内存泄露的检查方法
US6883082B2 (en) 2002-12-19 2005-04-19 Lsi Logic Corporation Central dynamic memory manager
CN100530110C (zh) * 2005-12-08 2009-08-19 中兴通讯股份有限公司 嵌入式系统中自动监测内存泄漏与内存越界的系统
US20070226445A1 (en) 2006-03-22 2007-09-27 Tony Nichols Method and system for rapid data-fragmentation analysis of a file-allocation-table (FAT) file system
CN100504807C (zh) * 2006-10-13 2009-06-24 中兴通讯股份有限公司 一种通信设备系统中内存泄漏的检测方法
TW200828014A (en) * 2006-12-28 2008-07-01 Genesys Logic Inc Flash memory management method with low RAM utilization
CN101539870A (zh) * 2008-03-21 2009-09-23 中兴通讯股份有限公司 内存泄漏检测装置及方法
CN101615143B (zh) * 2008-06-27 2013-04-17 国际商业机器公司 用于内存泄漏诊断的方法和装置
US8375192B2 (en) 2008-12-16 2013-02-12 Sandisk Il Ltd. Discardable files
CN101763305B (zh) * 2009-12-29 2011-12-14 青岛海信宽带多媒体技术有限公司 一种嵌入式系统内存泄露的检测方法
US8233390B2 (en) 2010-02-22 2012-07-31 Telefonaktiebolaget L M Ericsson (Publ) Priority and source aware packet memory reservation and flow control in forwarding planes
CN102073591A (zh) * 2011-01-14 2011-05-25 福建星网视易信息系统有限公司 嵌入式系统内存占用状况检测方法及系统

Also Published As

Publication number Publication date
JP2013109756A (ja) 2013-06-06
CN103123604A (zh) 2013-05-29
EP2657844A3 (en) 2016-05-25
KR101357397B1 (ko) 2014-02-03
US8949518B2 (en) 2015-02-03
US20130132699A1 (en) 2013-05-23
CN103123604B (zh) 2015-09-09
EP2657844B1 (en) 2020-09-09
JP5425286B2 (ja) 2014-02-26
WO2013074201A1 (en) 2013-05-23
TWI456395B (zh) 2014-10-11
KR20130055515A (ko) 2013-05-28
EP2657844A2 (en) 2013-10-30
US20140089627A1 (en) 2014-03-27
US8626993B2 (en) 2014-01-07

Similar Documents

Publication Publication Date Title
TW201321980A (zh) 追蹤一資料處理系統的記憶體使用率之方法
KR101994021B1 (ko) 파일 조작 방법 및 장치
US9665485B2 (en) Logical and physical block addressing for efficiently storing data to improve access speed in a data deduplication system
US8838916B2 (en) Hybrid data storage management taking into account input/output (I/O) priority
US9229943B2 (en) Addressing cross-allocated blocks in a file system
US20130232124A1 (en) Deduplicating a file system
US9275201B2 (en) Execution-based license discovery and optimization
WO2015051641A1 (zh) 一种磁盘镜像空间回收的方法及装置
US9189477B2 (en) Managing direct attached cache and remote shared cache
CN109947667B (zh) 数据访问预测方法和装置
US9223703B2 (en) Allocating enclosure cache in a computing system
US20140082305A1 (en) Providing usage statistics for virtual storage
US10432727B1 (en) Reducing network traffic when replicating memory data across hosts
CN107145300B (zh) 数据共享管理方法及装置
KR20160084784A (ko) 드라이브 컨트롤러를 포함하는 저장 장치 및 상기 드라이브 컨트롤러가 수행하는 주소 사상 방법
CN117251286A (zh) 一种为云原生应用动态分配大页的方法及装置
CN116324738A (zh) 管理和排序存储器资源
CN113312522A (zh) 内核对象的管理方法、装置、存储介质及电子设备
JP2014157476A (ja) 計測装置及び計測方法
CN104221014A (zh) 内容派生的存储器中数据放置的方法和装置