CN103123604A - 跟踪数据处理系统的内存使用的方法 - Google Patents

跟踪数据处理系统的内存使用的方法 Download PDF

Info

Publication number
CN103123604A
CN103123604A CN2012104732298A CN201210473229A CN103123604A CN 103123604 A CN103123604 A CN 103123604A CN 2012104732298 A CN2012104732298 A CN 2012104732298A CN 201210473229 A CN201210473229 A CN 201210473229A CN 103123604 A CN103123604 A CN 103123604A
Authority
CN
China
Prior art keywords
entry
memory
memory allocation
trackbar
client
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
CN2012104732298A
Other languages
English (en)
Other versions
CN103123604B (zh
Inventor
U·S·瓦杉培安
D·A·驰米恩
D·S·海勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Computer 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 Computer Inc filed Critical Apple Computer Inc
Publication of CN103123604A publication Critical patent/CN103123604A/zh
Application granted granted Critical
Publication of CN103123604B publication Critical patent/CN103123604B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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),使得应用程序能够与硬件和软件资源交互,以及与其他应用程序交互。
随着越来越多的服务为数据处理系统可用,系统中运行的程序数量显著增加了。这些程序中的每一个通常都消耗一定量的资源,比如内存。其中某些程序有可能会造成内存泄漏(memory leak)。例如,一个程序可能分配一块内存,而在其完成后并没有正确地释放该内存块。随着时间过去,可以分配给其他程序的可用内存变得越来越少。虽然存储设备的密度持续地增加,但是内存容量仍然十分有限。
通常,系统监控多个运行的应用的内存使用,来保证所需的空闲内存容量的可用性。在某些系统中,当内存使用达到临界水平时,系统采取内存管理行为来增加空闲内存大小,比如激活碎片收集过程来获得不再运行的应用所分配的内存。系统还可以针对选定的应用,比如通过简单地结束该应用。在某些情况下,为了进一步改进整个系统,识别是谁引起内存泄漏是有用或重要的。典型地,识别单个多用途程序(比如操作系统内核)中内存泄漏的原因是困难的。然而,还没有有效的机制来跟踪或查明引起内存泄漏的元凶。
附图说明
本发明的实施例通过举例来说明,而并不限于附图中的图,在附图中,相似的标记表示相似的元件。
图1是例示根据本发明的一个实施例的用于跟踪内存使用的系统的框图。
图2是例示根据本发明的一个实施例的分配表(allocation table)和跟踪表(trace table)的示例的框图。
图3是例示根据本发明的一个实施例的分配内存块的方法的流程图。
图4是例示根据本发明的一个实施例的释放内存块的方法的流程图。
图5是表示根据本发明的一个实施例的执行内存分配过程的程序的伪代码。
图6是表示根据本发明的一个实施例的执行内存释放过程的程序的伪代码。
图7是例示根据本发明的另一个实施例的分配内存块的方法的流程图。
图8是示出可与本发明的实施例一起使用的图形用户界面的屏幕截图。
图9是可与本发明的一个实施例一起使用的数据处理系统的框图。
图10是可与本发明的另一个实施例一起使用的数据处理系统的框图。
具体实施方式
参考下面讨论的细节来说明本发明的各个实施例和方面,附图将图示出各个实施例。下面的说明和附图是本发明的示意,而不是对本发明的限制。描述大量具体细节是为了提供对本发明的各个实施例的透彻理解。然而,在特定的实例中,为了提供本发明的实施例的简洁论述,没有描述公知的或惯用的细节。
说明书中提及“一个实施例”或“实施例”是指与实施例结合描述的特定的特征、结构或特性可被包括在本发明的至少一个实施例中。说明书中不同地方出现的短语“在一个实施例中”并不是一定指相同实施例。
根据某些实施例,操作系统的内存管理器被配置为维护内存分配表(也简称为分配表)和内存跟踪表(也可简称为跟踪表),以保持对请求内存分配的客户或拥有者的内存分配和释放的跟踪。在一个实施例中,分配表包括多个条目,其中每个条目基于所分配的内存块的内存地址来索引。每个条目包括一个关联到跟踪表条目的指针。跟踪表包括多个条目,其中每个条目由请求了内存分配的客户或拥有者的标识符来索引。
当内存块被分配给客户并且通过描述所分配的内存块的内存地址的句柄来引用时,内存管理器被配置为基于该句柄来查找分配表的分配条目,以确定指向跟踪表的指针是否已存储在其中。如果指针存在,则基于在分配表中检索到的指针来访问跟踪表的跟踪条目,以及更新该跟踪条目的内存分配信息。在一个实施例中,响应于内存分配请求,跟踪条目的内存分配计数可以递增,而响应于内存释放需求,跟踪条目的内存分配计数可以递减。内存分配计数可以用于表示客户可能请求分配内存块而没有正确地释放该内存块(例如内存泄漏)的可能性。
在一个实施例中,所分配内存块的客户或拥有者可以通过请求了内存分配和/或释放的程序的可执行代码序列或者栈帧(stack frame)的回溯(backtrace)来表示。在复杂的多用途程序中,回溯对于更精确地识别程序活动的特定子集是很有用的。分配表中的每一个条目基于内存分配的句柄的散列值而被索引。跟踪表中的每一个条目基于请求了内存分配和/或内存释放的程序的回溯的散列值而被索引。因此,内存管理器可以基于回溯和其内存分配计数,以高效的方式查明可执行代码的哪一行或哪些行有可能引起内存泄漏。
图1是例示根据本发明一个实施例的跟踪内存使用的系统的框图。图1中所示的系统100可代表各种各样的数据处理系统或设备。例如,系统100可以代表客户机器,比如台式机、笔记本、平板计算机、移动电话(例如智能电话)、媒体播放器、或是以上的组合。可替换的,系统100可以代表服务器,比如Web服务器、应用服务器、或后端服务器。参考图1,系统100包括通过API通信地耦接到内存管理器103的一个或多个程序101-102。内存管理器103可以作为操作系统的一部分来实现,操作系统可以是各种各样的操作系统,比如来自加州库柏堤诺的
Figure BSA00000808620600031
公司的Mac OSTM或iOSTM,来自华盛顿雷蒙德的
Figure BSA00000808620600032
公司的WindowsTM操作系统,
Figure BSA00000808620600034
操作系统)。程序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)。如果指针存在,则基于在分配表105中检索到的指针(例如跟踪条目209的字段204)来访问跟踪表106的跟踪条目(例如跟踪条目209),并更新该跟踪条目中的内存分配信息(例如跟踪条目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,内存管理器将内存分配信息填写(populate)到跟踪表中与该客户相关联的条目中。在一个实施例中,跟踪条目的内存分配计数递增。可以使用请求了该内存分配的可执行代码序列或栈帧的回溯来表示该客户。在框304,将跟踪条目的地址存储到与分配表中的内存分配句柄相对应的分配条目中。然后,在框305,将内存分配句柄返回给客户,从而完成内存请求过程。图5是描述实现图3中的方法300的程序的伪代码。
图4是示出根据本发明的一个实施例的内存块释放方法的流程图。例如,方法400可由图1中的内存管理器103执行。参考图4,在框401,内存管理器接收来自客户的释放由句柄引用的内存块的请求。在框402,响应于该请求,内存管理器被配置为将该内存块释放回内存池中。在框403,内存管理器基于句柄查找内存分配表以定位分配条目,并识别跟踪表中对应于该句柄的跟踪条目指针。基于该跟踪条目指针,在框404,内存管理器更新由跟踪条目指针所链接的跟踪条目中存储的内存分配/释放信息,例如,包括递减跟踪条目的内存分配计数。图6是描述实现图4中的方法400的程序的伪代码。
上面所述的内存泄漏检测机制可以作为操作系统的一部分、或插件、或操作系统内核的扩展来实现。根据一个实施例,内存泄漏检测机制可以只在有正在导致内存泄漏的可能性时被激活。一开始,根据一个实施例,直到剩余的可用于分配的内存降低到低于预定的阈值时,内存泄漏检测机制才被激活。典型地,当数据处理系统启动时,有许多可用资源或内存可以分配给程序。在这种情况下,不需要跟踪内存泄漏。当可用于分配的空闲可用内存降低到低于预定的阈值时,根据一个实施例,激活内存泄漏检测机制。通常,数据处理系统可能具有较少的内存泄漏,其中,可用资源足以补偿内存泄漏而不会显著影响系统性能。因此,可能不需要检测内存泄漏。所以,只有在需要最小化与之相关的资源消耗时,才激活内存泄漏检测机制。
如上所述,当接收到分配内存的请求时,将内存分配记录到前面所述的分配表和跟踪表中。在一个实施例中,响应于内存分配请求,检查分配表中与所分配内存的句柄相关联的条目,并检查跟踪表中与所分配内存的拥有者相关联的条目。相应地更新内存分配信息,比如跟踪条目的内存分配计数。对于已分配的内存块的特定句柄,如果在分配表或者跟踪表中没有对应的一个或多个条目,则在分配表或者跟踪表中分配或者创建新的条目,例如,通过在分配表的条目中存储跟踪条目指针,以及递增跟踪表中相关联的跟踪条目中的内存分配计数。
类似地,当接收到释放内存块的请求时,相关联的内存分配计数递减,并且分配表的相关联的分配条目中相应的跟踪条目指针可被重置为预定值,比如NULL或零。如果特定的跟踪条目的内存分配计数达到零,这意味着该特定的跟踪条目是空闲的,可以分配给其他请求。类似地,当分配表的特定分配条目的跟踪条目指针不包含有效的跟踪条目指针时(例如NULL或者零),该特定分配条目是空闲的,可用于分配。根据一个实施例,为了保持分配表和/或跟踪表相对较小的大小,以及重现与簿记(bookkeeping)相关联的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和字段203,字段202用于存储内存分配的实际句柄或内存地址,字段203用于存储关联到跟踪表106中的跟踪条目的指针。分配表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来执行,其可以实现为软件形式、硬件形式、或者二者结合形式的处理逻辑。参考图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中,其随之指示该分配条目现在被占用。
此时要注意的是,可能会有多个分配条目关联到同一个跟踪条目。例如,如果跟踪条目的内存分配计数是2,则分配表105中可能有至少两个分配条目与跟踪表106中的相应跟踪条目相关联。也就是说,一个拥有者可能分配了多个内存块,而没有释放其中的一些。例如,参考图2,假设由回溯表示的拥有者被分配了第一内存块,其导致分配条目207(基于第一句柄)关联到跟踪条目209。随后,该同一个拥有者(比如相同的回溯)分配了第二内存块,其导致分配条目208(基于第二句柄)关联到相同的跟踪条目209(因为是相同的回溯)。结果,分配条目207-208都关联到内存分配计数为2的同一跟踪条目209。
根据一个实施例,如果在框702中确定分配条目被占用,则在框708,处理逻辑检查由分配条目关联到的跟踪条目,以确定该跟踪条目是否被同一个拥有者所拥有(通过如上文那样对回溯进行比较)。此外,处理逻辑还可以将实际句柄与存储在分配条目的字段202中的句柄相比较,来确定该内存分配是否与已经记录的内存分配相同。如果是相同的拥有者或者相同的句柄,则处理逻辑可以跳过对当前内存分配的处理,因为其已经被处理过了。如果不是相同的拥有者,则在框709,将跟踪表106中的新的跟踪条目分配给新的拥有者。此外,用新的跟踪条目的地址替换字段203中的跟踪条目指针,并递增新的跟踪条目的内存分配计数。要注意,现在分配条目链接到了新的跟踪条目,而不是旧的跟踪条目。在框710,递减跟踪表106中旧的跟踪条目的内存分配计数。
图9是数据处理系统的框图,其可以与本发明的一个实施例一起使用。例如,系统900可以用作图1中所示的系统100的一部分。注意,尽管图9中例示了计算机系统的各种组件,但这并不是意图表示任何特定的结构或互连组件的方式;因为这些细节与本发明没有密切关系。还要理解的是,网络计算机、手持式计算机、蜂窝电话、以及其他具有更少的组件或可能具有更多组件的数据处理系统同样可以与本发明一起使用。例如,图9的计算机系统可以是AppleMacintosh计算机或者Macbook、IBM兼容PC、或计算机服务器。
如图9所示,计算机系统900是数据处理系统的一种形式,其包括总线或互连部902,总线或互连部902耦合到一个或多个微处理器903、ROM907、易失性RAM905、以及非易失性存储器906。微处理器903耦合到高速缓存904。总线902将这些不同的组件互连在一起,还将这些组件903、907、905合906互连到显示控制器和显示设备908,以及输入/输出(I/O)设备910,后者可以是鼠标、键盘、调制解调器、网络接口、打印机、以及其他本领域公知的设备。
典型地,输入/输出设备910通过输入/输出控制器909耦合到系统。易失性RAM905典型地实现为动态RAM(DRAM),其需要持续的电力来刷新或保持存储器中的数据。非易失性存储器906典型地为磁性硬盘驱动器、磁光盘驱动器、光盘驱动器、或DVD RAM、或者即使在系统断电后仍保持数据的其他类型的存储器系统。典型地,非易失性存储器还是随机存取存储器,尽管不必须如此。
图9显示了非易失性存储器是直接耦合到数据处理系统中的其他组件的本地设备,本发明可以使用可远离系统的非易失性存储器,比如通过网络接口(比如调制解调器或者以太网接口)耦合到数据处理系统的网络存储设备。总线902可以包括一个或多个总线,其通过各种桥、控制器、和/或适配器相互连接,如本领域公知的那样。在一个实施例中,I/O控制器909包括用于控制USB外设的USB(通用串行总线)适配器。可替换的,I/O控制器909可以包括IEEE-1394适配器(还被称为FireWire适配器),用于控制FireWire设备。
图10是数据处理系统的框图,其可以与本发明的另一个实施例一起使用。如图10所示,数据处理系统1000包括存储器1020和内存分配模块1040,存储器1020被配置为存储内存分配表和内存跟踪表。内存分配模块1040用于管理内存,其包括:第一执行部件1041,其被配置为在内存分配表中执行第一查找操作,以基于表示分配给客户的内存块的内存地址的句柄来识别分配条目并从该分配条目中检索跟踪条目指针;第二执行部件1042,其被配置为在内存跟踪表中执行第二查找操作,以基于跟踪条目指针识别跟踪条目并递增该跟踪条目的内存分配计数,其中该内存分配计数用于指示该客户导致内存泄漏的可能性。作为上面公开的一个或多个例子的附加或替换,在某些例子中,通过程序的可执行代码序列的回溯来识别客户,并且在内存跟踪表中基于该回溯的散列值来索引跟踪条目。作为上面公开的一个或多个例子的附加或替换,在某些例子中,基于所述句柄的散列值来索引内存分配表的分配条目。作为上面公开的一个或多个例子的附加或替换,在某些例子中,内存分配模块1040还包括:检查部件1043,用于检查分配条目,以通过确定该分配条目是否包含有跟踪条目指针来确定该分配条目是否是空闲可用的;以及更新部件1044,用于在该分配条目是空闲的情况下,用内存跟踪表的所述跟踪条目地址来更新分配条目。作为上面公开的一个或多个例子的附加或替换,在某些例子中,内存分配模块1040还包括:检查部件1043,用于在分配条目空闲的情况下,检查内存跟踪表的跟踪条目来确定内存分配计数是否大于预定值;以及确定部件1045,用于在内存分配计数大于该预定值的情况下,确定该客户是否与内存跟踪表中该跟踪条目的拥有者相同,其中如果客户与跟踪条目的拥有者相同,则递增该跟踪条目的内存分配计数。作为上面公开的一个或多个例子的附加或替换,在某些例子中,内存分配模块1040还包括:确定部件1045,用于在分配条目不是空闲而且关联到已有跟踪条目的情况下,确定该客户是否与内存跟踪表的所述跟踪条目的拥有者相同;递减部件1046,用于在该客户与拥有者不同时,递减所述已有跟踪条目的内存分配计数;以及更新部件1044,用于用所述跟踪条目的地址来更新内存分配表的分配条目。作为上面公开的一个或多个例子的附加或替换,在某些例子中,内存分配模块1040还包括:检索部件1047,响应于释放由第二句柄标识的第二内存块的请求,基于第二句柄从来自内存分配表的第二分配条目中检索第二跟踪条目指针;以及递减部件1046,用于基于第二跟踪条目指针,递减内存跟踪表的第二跟踪条目的内存分配计数。作为上面公开的一个或多个例子的附加或替换,在某些例子中,第一和第二查找操作只针对内存分配请求的样本而执行。
上面详细描述的某些部分是以算法术语和对计算机内存中的数据位的操作的符号表示来呈现的。这些算法描述和表示是数据处理领域的技术人员用于向该领域其他技术人员说明其工作实质的最有效的方式。此处的算法通常被认为是通向所期望结果的自包含的操作序列。这些操作是需要对物理量进行物理操纵的操作。
然而应该记住的是,所有这些和类似的术语是与适当的物理量相关联的,并且仅仅是应用于这些物理量的方便标签。除非从上文讨论清楚看出是特别声明了其它情况,否则应当注意,在该说明书中,使用诸如权利要求书中提出的术语的论述涉及的是计算机系统或类似电子计算设备的动作和处理,其操纵在计算机系统的寄存器和存储器内表示为物理(电子)量的数据并将其转换成类似地在计算机系统的存储器或寄存器或其他此类信息存储、传输或显示设备内表示为物理量的其他数据。
附图中所示的技术可以使用在一个或多个电子设备上存储和执行的代码和数据来实现。该电子设备使用计算机可读介质来存储和通信(内部地和/或通过网络与其他电子设备通信)代码和数据,所述计算机可读介质比如非暂时性计算机可读存储介质(例如磁盘、光盘、随机存取存储器、只读存储器、闪存设备、相变存储器)以及暂时性计算机可读传输介质(例如电的、光的、声学或其他形式的传播信号——比如载波、红外信号、数字信号)。
附图中描述的过程或方法可以由处理逻辑执行,该处理逻辑包括硬件(例如电路、专用逻辑等等)、固件、软件(例如包含在非暂时性计算机可读介质中)、或是上述的组合。尽管上述的过程或方法是按照某些操作顺序来描述的,应理解的是某些描述的操作可以以不同的顺序实现。此外,某些操作可以并行执行而不是顺序执行。
在上述说明书中,通过参考本发明的具体示例性实施例描述了发明的实施例。明显的是,可以对其进行各种修改而不违背如权利要求书中提出的本发明的更广的精神和范围。因此,说明书和附图被认为是示例意义而非限制意义。

Claims (22)

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.如权利要求9所述的装置,还包括:
响应于释放由第二句柄识别的第二内存块的请求,基于第二句柄从来自内存分配表的第二分配条目中检索第二跟踪条目指针的部件;以及
基于该第二跟踪条目指针,递减内存跟踪表的第二跟踪条目的内存分配计数的部件。
16.如权利要求9所述的装置,其中第一和第二查找操作只针对内存分配请求的样本而执行。
17.一种数据处理系统,包括:
存储器,用于存储内存分配表和内存跟踪表;以及
内存分配模块,用于在内存分配表中执行第一查找操作,以基于表示分配给客户的内存块的内存地址的句柄来识别分配条目并从该分配条目中检索跟踪条目指针,其中内存分配模块被配置为在内存跟踪表中执行第二查找操作,以基于所述跟踪条目指针识别跟踪条目并递增该跟踪条目的内存分配计数,其中该内存分配计数用于指示所述客户导致内存泄漏的可能性。
18.如权利要求17所述的系统,其中通过程序的可执行代码序列的回溯来识别所述客户,并且在内存跟踪表中基于该回溯的散列值来索引跟踪条目。
19.如权利要求17所述的系统,其中基于所述句柄的散列值来索引内存分配表的分配条目。
20.如权利要求17所述的系统,其中内存分配模块被配置为:
检查分配条目,以通过确定该分配条目是否包含有跟踪条目指针来确定该分配条目是否是空闲可用的;以及
如果该分配条目是空闲的,则用内存跟踪表的所述跟踪条目的地址来更新该分配条目。
21.如权利要求20所述的系统,其中内存分配模块被配置为:
如果分配条目是空闲的,则检查内存跟踪表的所述跟踪条目以确定内存分配计数是否大于预定值;以及
如果内存分配计数大于该预定值,则确定所述客户是否与内存跟踪表中该跟踪条目的拥有者相同,其中,如果该客户与该跟踪条目的拥有者相同,则递增该跟踪条目的内存分配计数。
22.如权利要求21所述的系统,其中内存分配模块被配置为:
如果分配条目不是空闲的而且关联到已有跟踪条目,则确定所述客户是否与内存跟踪表的所述跟踪条目的拥有者相同;
如果客户与拥有者不同,则
递减所述已有跟踪条目的内存分配计数;以及
用所述跟踪条目的地址来更新内存分配表的所述分配条目。
CN201210473229.8A 2011-11-18 2012-09-28 跟踪数据处理系统的内存使用的方法 Active CN103123604B (zh)

Applications Claiming Priority (2)

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
US13/300,144 2011-11-18

Publications (2)

Publication Number Publication Date
CN103123604A true CN103123604A (zh) 2013-05-29
CN103123604B CN103123604B (zh) 2015-09-09

Family

ID=47044823

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210473229.8A Active CN103123604B (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)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104714883A (zh) * 2013-12-17 2015-06-17 国际商业机器公司 用于通过动态地分配时间戳计数器来提高跟踪阵列的效率的方法和设备
CN105302734A (zh) * 2014-07-22 2016-02-03 北京畅游天下网络技术有限公司 内存管理系统和方法
CN106294189A (zh) * 2015-05-25 2017-01-04 中兴通讯股份有限公司 内存碎片整理方法及装置
CN106886474A (zh) * 2015-12-16 2017-06-23 塔塔顾问服务有限公司 用于存储器嫌疑检测的方法和系统
CN108780425A (zh) * 2016-03-10 2018-11-09 微软技术许可有限责任公司 受保护指针
CN110249315A (zh) * 2017-02-02 2019-09-17 微软技术许可有限责任公司 在跟踪重放期间存储器值的有效检索
CN113722021A (zh) * 2020-05-25 2021-11-30 慧与发展有限责任合伙企业 由实体使用数据结构进行对象共享

Families Citing this family (29)

* 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
CN104750605B (zh) * 2013-12-30 2018-08-14 伊姆西公司 将内核对象信息包括在用户转储中
CN106537345B (zh) 2014-06-13 2020-10-13 皮沃塔尔软件公司 在多进程计算环境中精确跟踪内存使用
JP6428005B2 (ja) * 2014-07-10 2018-11-28 富士通株式会社 情報処理装置,情報処理方法及び情報処理プログラム
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
US10942683B2 (en) * 2015-10-28 2021-03-09 International Business Machines Corporation Reducing page invalidation broadcasts
CN105260314B (zh) * 2015-11-03 2018-06-29 上海斐讯数据通信技术有限公司 内存泄漏的监测方法
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
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
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 北京字节跳动网络技术有限公司 一种文件句柄监控及分析方法、装置、介质和设备
US11442832B2 (en) * 2020-11-24 2022-09-13 Hewlett Packard Enterprise Development Lp Managing synchronized reboot of a system

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020163913A1 (en) * 2001-05-07 2002-11-07 Jintae Oh Pointer management and content matching packet classification
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
CN1466057A (zh) * 2002-06-20 2004-01-07 华为技术有限公司 一种软件内存泄露的检查方法
US20040123038A1 (en) * 2002-12-19 2004-06-24 Lsi Logic Corporation Central dynamic memory manager
CN1979426A (zh) * 2005-12-08 2007-06-13 中兴通讯股份有限公司 嵌入式系统中自动监测内存泄漏与内存越界的系统
CN101162436A (zh) * 2006-10-13 2008-04-16 中兴通讯股份有限公司 一种通信设备系统中内存泄漏的检测方法
CN101539870A (zh) * 2008-03-21 2009-09-23 中兴通讯股份有限公司 内存泄漏检测装置及方法
CN101615143A (zh) * 2008-06-27 2009-12-30 国际商业机器公司 用于内存泄漏诊断的方法和装置
CN101763305A (zh) * 2009-12-29 2010-06-30 青岛海信宽带多媒体技术有限公司 一种嵌入式系统内存泄露的检测方法
CN102073591A (zh) * 2011-01-14 2011-05-25 福建星网视易信息系统有限公司 嵌入式系统内存占用状况检测方法及系统
US20110205897A1 (en) * 2010-02-22 2011-08-25 Telefonaktiebolaget L M Ericsson (Publ) Priority and source aware packet memory reservation and flow control in forwarding planes

Family Cites Families (8)

* 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 日本電気株式会社 メモリリーク検出システム、メモリリーク検出方法及び記録媒体
JP2002343064A (ja) 2001-05-17 2002-11-29 Fujitsu Ltd 記録再生装置及び方法
JP4157294B2 (ja) 2001-11-08 2008-10-01 富士通株式会社 欠陥ファイルの修復を可能とするファイルシステム
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
TW200828014A (en) 2006-12-28 2008-07-01 Genesys Logic Inc Flash memory management method with low RAM utilization
US8375192B2 (en) 2008-12-16 2013-02-12 Sandisk Il Ltd. Discardable files

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CN1466057A (zh) * 2002-06-20 2004-01-07 华为技术有限公司 一种软件内存泄露的检查方法
US20040123038A1 (en) * 2002-12-19 2004-06-24 Lsi Logic Corporation Central dynamic memory manager
CN1979426A (zh) * 2005-12-08 2007-06-13 中兴通讯股份有限公司 嵌入式系统中自动监测内存泄漏与内存越界的系统
CN101162436A (zh) * 2006-10-13 2008-04-16 中兴通讯股份有限公司 一种通信设备系统中内存泄漏的检测方法
CN101539870A (zh) * 2008-03-21 2009-09-23 中兴通讯股份有限公司 内存泄漏检测装置及方法
CN101615143A (zh) * 2008-06-27 2009-12-30 国际商业机器公司 用于内存泄漏诊断的方法和装置
CN101763305A (zh) * 2009-12-29 2010-06-30 青岛海信宽带多媒体技术有限公司 一种嵌入式系统内存泄露的检测方法
US20110205897A1 (en) * 2010-02-22 2011-08-25 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 福建星网视易信息系统有限公司 嵌入式系统内存占用状况检测方法及系统

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104714883A (zh) * 2013-12-17 2015-06-17 国际商业机器公司 用于通过动态地分配时间戳计数器来提高跟踪阵列的效率的方法和设备
CN105302734A (zh) * 2014-07-22 2016-02-03 北京畅游天下网络技术有限公司 内存管理系统和方法
CN105302734B (zh) * 2014-07-22 2018-04-06 北京畅游天下网络技术有限公司 内存管理系统和方法
CN106294189A (zh) * 2015-05-25 2017-01-04 中兴通讯股份有限公司 内存碎片整理方法及装置
CN106294189B (zh) * 2015-05-25 2020-09-25 中兴通讯股份有限公司 内存碎片整理方法及装置
CN106886474A (zh) * 2015-12-16 2017-06-23 塔塔顾问服务有限公司 用于存储器嫌疑检测的方法和系统
CN108780425A (zh) * 2016-03-10 2018-11-09 微软技术许可有限责任公司 受保护指针
CN108780425B (zh) * 2016-03-10 2023-01-10 微软技术许可有限责任公司 受保护指针
CN110249315A (zh) * 2017-02-02 2019-09-17 微软技术许可有限责任公司 在跟踪重放期间存储器值的有效检索
CN110249315B (zh) * 2017-02-02 2023-06-20 微软技术许可有限责任公司 在跟踪重放期间存储器值的有效检索
CN113722021A (zh) * 2020-05-25 2021-11-30 慧与发展有限责任合伙企业 由实体使用数据结构进行对象共享
CN113722021B (zh) * 2020-05-25 2023-08-22 慧与发展有限责任合伙企业 由实体使用数据结构进行对象共享

Also Published As

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

Similar Documents

Publication Publication Date Title
CN103123604B (zh) 跟踪数据处理系统的内存使用的方法
US8321703B2 (en) Power aware memory allocation
US8250310B2 (en) Assigning data to NVRAM of shared access hybrid hard drives
KR20170008152A (ko) 불휘발성 메모리 장치에서의 데이터 특성 기반 데이터 배치
US20120185447A1 (en) Systems and Methods for Providing Increased Scalability in Deduplication Storage Systems
CN107506136B (zh) 一种垃圾回收的方法和装置
CN102906714A (zh) 缓存存储适配器架构
CN108959526B (zh) 日志管理方法以及日志管理装置
US11734103B2 (en) Behavior-driven die management on solid-state drives
US11809253B2 (en) Managing ephemeral storage on a computing node
US20140372673A1 (en) Information processing apparatus, control circuit, and control method
KR20220030188A (ko) 통합 장치 로그를 사용한 복수의 불휘발성 메모리 스테이트 드라이브 블록-레벨 고장 예측 방안
KR20170023734A (ko) 플래시 메모리 플러싱을 개선하는 방법 및 시스템
US9836222B2 (en) Storage apparatus, storage control method, and storage system
US11204869B2 (en) System and method for facilitating data storage with low-latency input/output and persistent data
US11016889B1 (en) Storage device with enhanced time to ready performance
US11829619B2 (en) Resource usage arbitration in non-volatile memory (NVM) data storage devices with artificial intelligence accelerators
US9846653B2 (en) Performing write operations on main memory
WO2016060700A1 (en) File system journaling
CN105659216A (zh) 多核处理器系统的缓存目录处理方法和目录控制器
CN104077171A (zh) 调度虚拟机时的处理方法和设备
CN103678241A (zh) 存储器管理控制系统以及存储器管理控制方法
US11593035B2 (en) Managing client devices associated with storage nodes in a scale-out storage system
US11645198B2 (en) Buffer pool maintenance improvement
US11385798B1 (en) Method and system for application aware, management of write operations on non-volatile storage

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant