CN100573470C - 计算机程序运行时分析方法 - Google Patents
计算机程序运行时分析方法 Download PDFInfo
- Publication number
- CN100573470C CN100573470C CNB2007101927414A CN200710192741A CN100573470C CN 100573470 C CN100573470 C CN 100573470C CN B2007101927414 A CNB2007101927414 A CN B2007101927414A CN 200710192741 A CN200710192741 A CN 200710192741A CN 100573470 C CN100573470 C CN 100573470C
- Authority
- CN
- China
- Prior art keywords
- virtual memory
- computer program
- memory zone
- tabulation
- subclauses
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
一种对计算机程序进行运行时分析的方法,所述方法可以包括在所述计算机程序运行期间检测虚拟存储器区域的分配。可以在现有虚拟存储器区域的列表中为运行期间的每项虚拟存储器区域分配创建条目。可以在运行期间根据所述虚拟存储器区域的使用更新所述列表。根据所述列表可以表明分配给所述计算机程序但未被所述计算机程序使用的虚拟存储器区域。
Description
技术领域
本发明涉及计算机程序运行时分析领域。
背景技术
运行时分析工具在软件开发中普遍地用于评估计算机程序的行为。运行时分析是指使用在计算机程序执行期间收集的数据理解计算机程序行为的做法。典型地,使用运行时分析工具编译程序代码。运行时分析工具为称为被测计算机程序的计算机程序赋予能够执行各种监控任务和报告功能的附加代码,这些监控任务和报告功能能够或可能与运行时分析工具本身协同工作。
一般地,虚拟存储器是指计算机程序访问计算机系统存储器资源的方式。大多数现代操作系统使用被翻译成真实随机访问存储器地址的虚拟存储器地址引用存储器。在很大程度上,只有操作系统内核的核心部分才能直接地访问真实存储器地址。如果管理不当,计算机程序可能使虚拟存储器溢出。当虚拟存储器被耗尽时,计算机程序经常会表现出意外行为或不确定行为。在其他情况下,计算机程序彻底崩溃。
发明内容
本发明涉及对计算机程序进行运行时分析的方法。所述方法可以包括在计算机程序运行期间检测虚拟存储器区域的分配并且在现有虚拟存储器区域的列表中为运行期间每项虚拟存储器区域分配创建条目。可以在运行期间根据对虚拟存储器区域的使用更新列表。根据列表可以表明分配给计算机程序但未被计算机程序使用的虚拟存储器区域。
本发明也涉及对计算机程序进行运行时分析的方法,其包括在计算机程序运行期间检测虚拟存储器区域的保留,在计算机程序运行期间检测虚拟存储器区域的提交(commit),并且在现有虚拟存储器区域列表中为运行期间虚拟存储器区域的每项保留和每项提交创建条目。可以根据释放的虚拟存储器区域和提交的虚拟存储器区域更新列表。所述方法进一步包括根据列表表明分配给计算机程序但未被计算机程序使用的虚拟存储器区域。
本发明也涉及包括具有计算机可用程序代码的计算机可用介质的计算机程序产品,该计算机可用程序代码由信息处理系统执行时,执行本文的各种步骤和/或功能。
附图说明
图1是示出根据本发明的一个方面的方法的流程图。
图2是示出根据本发明的另一个方面的方法的流程图。
图3是示出根据本发明的另一个方面的方法的流程图。
图4是示出根据本发明的另一个方面的方法的流程图。
具体实施方式
正如本领域普通技术人员可以理解的,本发明可以作为方法、系统或计算机程序产品实施。相应地,本发明可以采用完全的硬件实施形式,完全的软件实施形式(包括固件、驻留软件、微码等),或结合硬件和软件方面的实施形式(在此均可以通称为“电路”、“模块”或“系统”)。
并且,本发明可以采用能够从计算机可用或计算机可读介质访问的计算机产品的形式,其提供程序代码供计算机或任何指令执行系统使用或与计算机或任何指令执行系统联合使用。出于本说明的目的,计算机可用或计算机可读介质可以是能够包含、存储、传送、传播或传输程序供指令执行系统、装置或设备使用或与指令执行系统、装置或设备联合使用的任何装置。
可以使用任何适当的计算机可用或计算机可读介质,例如,介质可以包括但不限于电的、磁的、光的、电磁的、红外的或半导体系统(或装置或设备),或传播介质。示例性计算机可读介质的非穷尽列举可以包括具有一根或多根导线的电连接,光纤,磁存储设备如磁带、可移除式计算机磁盘、移动计算机磁盘、硬盘、硬磁盘,光学存储介质如光盘,包括只读光盘存储器(CD-ROM)、可读写光盘(CD-R/W)或DVD,或半导体或固态存储器,其包括但不限于随即访问存储器(RAM)、只读存储器(ROM)或可擦除可编程只读存储器(EPROM或闪速存储器)。
计算机可用或计算机可读介质还可以包括传输介质如支持因特网或内网的传输介质。并且,计算机可用介质可以包括在基带中或作为载波的一部分的包含计算机可用程序代码的被传播的数据信号。计算机可用程序代码可以使用任何适当的介质传输,包括但不限于因特网、有线连接、光纤、电缆、射频等。
在另一个方面,计算机可用或计算机可读介质可以是印刷有程序的纸或其他适当的介质,程序可以通过例如光学扫描纸或其他介质而电子地捕获,随后如果需要,进行编译、解析或以其他适当的方式进行处理,并且随后存储在计算机存储器中。
用于实现本发明操作的计算机程序代码可以用任何面向对象的程序设计语言编写,如Java,Smalltak,C++等。然而,用于实现本发明操作的计算机程序代码也可以采用传统的过程化程序设计语言编写,如“C”程序设计语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行,部分地在用户计算机上执行,作为独立软件包部分地在用户计算机上执行并且部分地在远程计算机上执行,或完全地在远程计算机或服务器上执行。在最后一种情况下,远程计算机可以通过局域网(LAN)或广域网(WAN)连接到用户计算机,或连接到外部计算机(例如通过使用因特网服务提供商的因特网)。
适用于存储和/或执行程序代码的数据处理系统包括至少一个直接地或通过系统总线间接地耦接到存储器单元的处理器。存储器单元可以包括实际执行程序代码过程中使用的本地存储器、大容量存储器以及高速缓冲存储器,高速缓冲存储器临时地存储至少部分程序代码以减少在执行过程中必须从大容量存储器中读取代码的次数。
输入/输出或I/O设备(包括但不限于键盘、显示器、指针设备等)可以直接地或通过居间I/O控制器耦接到系统。网络适配器也可以耦接到系统,使得数据处理系统可以通过居间的私人或公共网络耦接到其他数据处理系统或远程打印机或存储设备。调制解调器、线缆调制解调器和以太网卡是当前可用的网络适配器中的几种。
以下参照根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或方框图描述本发明。可以理解,流程图和/或方框图中的每个方框,以及流程图和/或方框图中的方框组合可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程的数据处理装置的处理器以产生机器,使得通过计算机或其他可编程的数据处理装置的处理器执行的指令创建用于实现流程图和/或方框图方框所规定的功能/动作的装置。
这些计算机程序指令也可以存储在计算机可读存储器中,计算机可读存储器可指导计算机或其他可编程处理装置以特定的方式执行功能,使得存储在计算机可读存储器中的指令产生制造产品,制造产品包括实现流程图和/或方框图方框所规定的功能/动作的指令装置。
也可以将计算机程序指令加载到计算机或其他可编程的数据处理装置,促使在计算机或其他可编程的数据处理装置上执行一系列操作步骤从而产生计算机实现的过程,使得在计算机或其他可编程的数据处理装置上执行的指令提供实现流程图和/或方框图方框所规定的功能/动作的步骤。
本发明涉及监控计算机程序在运行期间对虚拟存储器的使用。更特别地,本发明涉及检测分配给计算机程序使用而未被使用的虚拟存储器。可以使用运行时分析工具向计算机程序赋予分析和监控代码。被赋予代码的计算机程序被称为“被测计算机程序”(CPUT),其可以执行。可以识别和记录来自CPUT的涉及虚拟存储器使用的请求。随着CPUT继续执行,可以识别分配给计算机程序的虚拟存储器区域以及那些被分配并且被使用的虚拟存储器区域。可以提供报告表明那些被分配给CPUT但在执行中未被CPUT使用的虚拟存储器区域。
在现代操作系统中,虚拟存储器可以以几种不同的状态存在。例如,“空闲”虚拟存储器是指未提交或保留的虚拟存储器,例如页面。这样,空闲虚拟存储器对于计算机程序的进程是不可用的,直至空闲虚拟存储器以某种方式被分配给计算机程序或进程为止。本文所使用的术语“已分配”可以指保留虚拟存储器,提交虚拟存储器,或保留和提交虚拟存储器。
“保留的”虚拟存储器可以指虚拟存储器的一部分,即称为虚拟存储器区域的一个地址范围,其不能由操作系统的其他分配功能使用。典型地,保留的虚拟存储器对于运行于同一进程中的同一程序的其他组件不可用。然而,虚拟存储器区域对于为其保留保留的虚拟存储器区域的计算机程序还不可用,直至所保留的虚拟存储器区域与物理存储相关联即提交时为止。
公司的类型的操作系统中的“VirtualAlloc”函数能够保留,或者保留和提交空闲虚拟存储器区域。例如,“VirtualAlloc”函数可以提交保留的虚拟存储器区域,但是不能再次保留虚拟存储器区域。例如类型的操作系统中的“VirtualFree”函数可以释放保留的虚拟存储器区域,使之成为空闲虚拟存储器区域。
如上文所述,提交的虚拟存储器是指已经被保留并且与物理存储相关联的虚拟存储器。计算机程序或进程可以访问提交的虚拟存储器。操作系统典型地按照需要将虚拟存储器提交页面加载到物理存储器,例如响应于第一次读或写该虚拟存储器区域的尝试。“VirtualFree”函数可以取消提交(decommit)已提交的虚拟存储器区域或可以取消提交并释放已提交的虚拟存储器区域。
可以用于实现在此描述的各种功能的运行时分析工具的一个例子是位于纽约阿芒克的国际商业机器公司()的PurifyPlusTM。PurifyPlusTM是能够在执行过程中赋予代码并与与被赋予代码的计算机程序协同工作的运行时分析工具的例子。(IBM,Rational,以及PurifyPlus是国际商业机器公司在美国,其他国家,或美国和其他国家的注册商标)。
这样,运行时分析工具可以为CPUT赋予用于监控或检测CPUT何时调用有关虚拟存储器管理的函数的代码。这种函数可以包括但不限于:“VirtualAlloc”,“VirtualFree”,或者任何其他已知的处理针对计算机程序的虚拟存储器分配和取消分配的函数。下文将参照附图描述本发明的这些方面和其他的方面。
本领域的普通技术人员将可以理解,本说明书讨论的产品旨在为本领域的普通技术人员更好地理解本文公布的实施例提供基础。然而本文对任何特定产品的提及并非意在以任何方式限制本发明。例如,本文公布的实施例可以作为独立的应用实现,作为用作较大应用的一部分的组件或“插件”实现,或者实际上在任何适当地细节化的结构、计算机程序和/或其部分中实现。
在一个实施例中,运行时分析工具可以与CPUT联合执行。在此情况下,运行时分析工具可以与CPUT同时并且协作执行。相应地,运行时分析工具可以截取CPUT调用的虚拟存储器管理函数以追踪虚拟存储器的使用。在另一个实施例中,运行时分析工具可以在CPUT中插入适当的代码或向CPUT赋予适当的代码用于执行本文的各种步骤。在此情况下,运行时分析工具不需要与CPUT联合执行。而CPUT可以以包含来自运行时分析工具的插入代码的变更形式执行。在这样的实施例中,CPUT中加入的代码能实现本文的功能。因此应当理解,对运行时分析工具的引用可以指任一种实施例。
本发明可以检测CPUT何时调用各种处理虚拟存储器使用的函数。本文仅为了说明的目的而讨论虚拟存储器的各种状态和用于管理虚拟存储器的各种函数。本领域的普通技术人员将可以理解,不同的操作系统可以采用与本文所述接近的不同函数和不同状态。相应地,本发明并不受限于所使用的特定类型的函数或虚拟存储器状态,或为此目的的操作系统。
图1是示出了根据本发明的一个方面的方法100的流程图。更特别的,图1示出了本发明与检测何时保留或提交虚拟存储器有关的方面。方法100可以开始于步骤105,其中CPUT与运行时分析工具联合运行。在步骤110,可以检测为CPUT提交或保留虚拟存储器。例如,可以识别或截取任何来自CPUT的对“VirtualAlloc”的调用,该调用请求提交或保留虚拟存储器区域。
在步骤115,可以在现有虚拟存储器区域的列表中为所检测到的虚拟存储器分配创建一个条目。列表可以规定任何已被分配的虚拟存储器区域。每个虚拟存储器区域可以由列表中规定该虚拟存储器区域的地址的的对应条目代表。可以理解,范围代表被分配的虚拟存储器的大小或数量,其中地址表明范围的边界。在步骤120,调用栈信息规定了检测到虚拟存储器分配时调用栈的内容,其可以存储在被检测到的虚拟存储器区域分配的条目中,或作为条目的一部分存储。
在步骤125,确定是否被分配的存储器为计算机程序保留但未提交。如果虚拟存储器区域被保留但未提交,方法进入步骤130。在步骤130,可以在检测到的虚拟存储器区域分配的条目中存储时间戳。然而如果虚拟存储器区域也已提交,方法可以进入步骤135。在步骤135,CPUT可以继续运行。随着检测到其他的虚拟存储器区域的分配,可以按照需要重复方法100。
图2是示出了根据本发明的另一个方面的方法200的流程图。更特别的,图2示出了本发明与检测虚拟存储器何时被释放有关的方面。方法可以开始于步骤205,其中CPUT在运行。在步骤210检测到虚拟存储器区域的释放即一个虚拟存储器范围的释放。例如,当CPUT调用“VirtualFree”函数时,可以检测到这样的事件。相应地,可以记录使用该函数释放的虚拟存储器区域。
在步骤215,可以更新现有虚拟存储器区域的列表。在一个实施例中,可以从列表中将对应于由“VirtualFree”函数释放的虚拟存储器区域的条目删除。在另一个实施例中,可以更新对应于被释放的虚拟存储器区域的条目,以表明该虚拟存储器区域现在空闲。在步骤220,CPUT可以继续运行并且根据需要可以重复该方法。
图3是示出了根据本发明的另一个方面的方法300的流程图。更特别的,图3示出了本发明与检测虚拟存储器何时被提交有关的方面。方法可以开始于步骤305,其中CPUT在运行。在步骤310可以检测到保留的存储器的提交。如上文所述,这可以包括检测到CPUT调用“VirtualAlloc”函数并且请求提交保留的虚拟存储器区域。
在步骤315,确定是否保留的虚拟存储器区域的部分仍然被保留。更特别地,响应于识别出关于提交现有虚拟存储器区域列表中一个条目所指定的整个保留的虚拟存储器区域的要求,方法进入步骤320。在步骤320可以从列表的该条目中删除时间戳。由于被保留用于供CPUT使用的整个虚拟存储器区域被提交并且从而被CPUT使用,因此不再需要时间戳用于报告的目的。
如果提交虚拟存储器的请求所指定的范围小于现有虚拟存储器区域列表中的条目所指定的整个保留的虚拟存储器区域,方法可以继续进入步骤325。换句话说,为CPUT保留虚拟存储器的一个块并且只能提交块的一部分。在步骤325,可以在现有虚拟存储器区域列表中增加一个没有时间戳的条目。该条目指定保留虚拟存储器区域的提交的部分。
应当理解,指定保留虚拟存储器区域的原始条目与步骤325所增加的表明现在提交的虚拟存储器区域的部分的条目相结合,共同地表明原始虚拟存储器区域的哪部分仍然被保留并且未提交即未使用。在步骤330,CPUT可以继续运行。根据需要可以重复方法。
图4是示出了根据本发明的另一个方面的方法400的流程图。更特别的,图4示出了本发明与扫描和报告未使用的虚拟存储器区域有关的方面。方法400可以随着CPUT继续运行而执行或在CPUT运行完毕后执行。在这两种情况下,任何在CPUT运行期间收集的数据都可以根据本文被分析、分类、过滤和/或处理。
在步骤405,运行时分析工具接收到扫描或报告的请求。请求可以指定提供现有虚拟存储器区域列表中任何表明虚拟存储器区域已经被CPUT保留但未提交的条目。在步骤410,确定该请求是否要求根据虚拟存储器区域的大小对数据进行排序。如果是,方法可以进入步骤415,其中可以根据大小对未提交的保留虚拟存储器区域所对应的条目排序。例如,根据用户首选项,可以首先或最后显示最大虚拟存储器区域所对应的条目。
如果请求未表明根据大小对列表排序,方法可以进入步骤420。在步骤420可以根据时间戳对列表排序。例如,根据用户首选项,可以首先或最后显示具有最早时间戳的未提交的保留虚拟存储器区域。在这两种情况下,由于每个条目也规定了表明条目产生时既有的栈状态的栈信息,也可以在同一报告或不同报告中显示或以其他方式提供栈信息。
本文公开的报告选项仅为了说明的目的,因而并非旨在限制本发明。本领域的普通技术人员可以理解,可以根据条目中所包含数据的任何参数或项目对条目或条目的数据进行排序和/或过滤。并且,如果需要可以以图表形式并且在动态视图内显示数据。在任何情况下,栈信息表明CPUT的哪部分负责保留而不使用虚拟存储器。
在本说明书中引用了特定的函数例如“VirtualAlloc”和“VirtualFree”。提供这些函数仅为说明的目的并且并非要将本文公布的实施例限制在任何特定类型的操作系统上。本领域的普通技术人员可以理解,本发明可以在各种不同的操作系统上实现或扩展到各种不同的操作系统上,并且用于管理虚拟存储器的特定函数将根据操作系统而不同。
附图的流程图和方框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的体系结构、功能性和操作。出于这种考虑,流程图或方框图中的每个方框可以代表包括用于实现特定逻辑功能的一个或多个可执行指令的模块、片段或代码部分。还需要注意,在某些替代的实现中,方框中提及的功能可能不按照附图的顺序执行。例如,根据涉及的功能性,顺序示出的两个方框实际上可以基本上并发地执行,或者有时候按照相反的顺序执行。还需要注意,所示出的方框和/或流程图中的每个方框以及所示出的方框和/或图流程图中的方框组合可以由执行特定功能或动作的基于硬件的专用系统实现,或由专用硬件和计算机指令的组合实现。
本文所使用的术语仅为描述特定的实施例的目的并且并非要限制本发明。本文所使用的单数形式“一”,“一个”和“该”旨在也包括复数形式,除非内容明确地作出相反的指示。可以进一步理解,本说明书所使用的术语“包括”规定了所述特性、整体(integer)、步骤、操作、元件和/或组件的存在,但是并不排除一个或多个其他的特性、整体、步骤、操作、元件和/或组件或其集合的存在或附加。
权利要求书中相应的结构、材料、动作和所有装置或步骤的等效物以及功能元件旨在包括任何用于与其他特别要求保护的权利要求要素共同执行功能的结构、材料或动作。本说明书对本发明的描述是为了说明和描述的目的,而并不是穷尽的或要将本发明限制于所公开的形式。本领域的普通技术人员可以理解,在不背离本发明范围和主旨的情况下可以对本发明进行各种变更和变形。选择和描述实施例是为了对本发明及其实际应用的原则作出最好的解释,并且使本领域的普通技术人员理解为适应特定的用途考虑而作出各种变更的各种实施例。
在参照本发明的实施例详述本发明后,可以理解,在不背离本发明范围和主旨的情况下可以对本发明进行各种变更和变形。
Claims (13)
1.一种对计算机程序进行运行时分析的方法,包括:
在所述计算机程序运行期间检测虚拟存储器区域的分配;
在现有虚拟存储器区域的列表中为运行期间每项虚拟存储器区域分配创建条目;
在运行期间根据所述虚拟存储器区域的使用更新所述列表;并且
根据所述列表,表明分配给所述计算机程序但未被所述计算机程序使用的虚拟存储器区域。
2.根据权利要求1的方法,进一步包括:
确定每项虚拟存储器区域分配的时间戳;
将所述时间戳包括在所述列表的对应条目中;并且
根据所述时间戳对所述列表的条目排序。
3.根据权利要求1的方法,进一步包括:
确定每项虚拟存储器区域分配所涉及的虚拟存储器区域的大小;
将所述大小包括在所述列表的对应条目中;并且
根据大小对所述列表的条目排序。
4.根据权利要求1的方法,其中所述检测虚拟存储器区域的分配进一步包括检测虚拟存储器区域的提交或虚拟存储器区域的保留。
5.根据权利要求4的方法,进一步包括:
响应于每项检测到的虚拟存储器区域分配确定调用栈的信息;并且
将所述调用栈的信息包括在每个对应条目中。
6.根据权利要求4的方法,进一步包括:在为所述计算机程序保留但未提交的每项虚拟存储器区域分配的条目中包括时间戳。
7.根据权利要求1的方法,其中更新所述列表进一步包括更新所述列表的条目以表明对空闲虚拟存储器区域的分配。
8.根据权利要求1的方法,其中更新所述列表进一步包括:对于包括提交部分和保留部分的已分配虚拟存储器区域,在所述列表中增加新的条目指定所述提交部分,其中所述新的条目不指定时间戳。
9.根据权利要求1的方法,其中更新所述列表进一步包括:对于每项已经提交的虚拟存储器区域的分配,从所述对应条目中删除所述时间戳。
10.一种对计算机程序进行运行时分析的方法,包括:
在计算机程序运行期间检测虚拟存储器区域的保留;
在计算机程序运行期间检测虚拟存储器区域的提交;
在现有虚拟存储器区域的列表中为在运行期间虚拟存储器区域的每项保留和每项提交创建条目;
根据所释放的虚拟存储器区域和所提交的虚拟存储器区域更新所述列表;并且
根据所述列表,表明分配给所述计算机程序但未被所述计算机程序使用的虚拟存储器区域。
11.根据权利要求10的方法进一步包括在虚拟存储器区域的每次保留或提交时在所述列表的各个条目中保存调用栈的信息。
12.一种对计算机程序进行运行时分析的系统,包括:
用于在所述计算机程序运行期间检测虚拟存储器区域分配的装置;
用于在现有虚拟存储器区域的列表中为运行期间每项虚拟存储器区域分配创建条目的装置;
用于在运行期间根据所述虚拟存储器区域的使用更新所述列表的装置;以及
用于根据所述列表,表明分配给所述计算机程序但未被所述计算机程序使用的虚拟存储器区域的装置。
13.一种对计算机程序进行运行时分析的系统,包括:
用于在计算机程序运行期间检测虚拟存储器区域的保留的装置;
用于在计算机程序运行期间检测虚拟存储器区域的提交的装置;
用于在现有虚拟存储器区域的列表中为在运行期间虚拟存储器区域的每项保留和每项提交创建条目的装置;
用于根据所释放的虚拟存储器区域和所提交的虚拟存储器区域更新所述列表的装置;以及
用于根据所述列表,表明分配给所述计算机程序但未被所述计算机程序使用的虚拟存储器区域的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/609,360 US7769976B2 (en) | 2006-12-12 | 2006-12-12 | Identifying code that wastes virtual memory |
US11/609,360 | 2006-12-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101201792A CN101201792A (zh) | 2008-06-18 |
CN100573470C true CN100573470C (zh) | 2009-12-23 |
Family
ID=39499697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101927414A Expired - Fee Related CN100573470C (zh) | 2006-12-12 | 2007-11-16 | 计算机程序运行时分析方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7769976B2 (zh) |
CN (1) | CN100573470C (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090276600A1 (en) * | 2008-05-05 | 2009-11-05 | Oracle International Corporation | Method and apparatus for determining memory usage for a computing device |
US8028147B2 (en) | 2008-06-09 | 2011-09-27 | International Business Machines Corporation | Arrangements for storing and retrieving blocks of data having different dimensions |
US8527628B2 (en) * | 2011-05-20 | 2013-09-03 | International Business Machines Corporation | Utilizing signatures to discover and manage derelict assets of an information technology environment |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5559980A (en) * | 1993-03-18 | 1996-09-24 | Lucent Technologies Inc. | Method and apparatus for detecting references to deallocated memory in a dynamic memory allocation system |
GB9907280D0 (en) * | 1999-03-31 | 1999-05-26 | Philips Electronics Nv | A method of scheduling garbage collection |
US6324631B1 (en) * | 1999-06-17 | 2001-11-27 | International Business Machines Corporation | Method and system for detecting and coalescing free areas during garbage collection |
US6898634B2 (en) * | 2001-03-06 | 2005-05-24 | Hewlett-Packard Development Company, L.P. | Apparatus and method for configuring storage capacity on a network for common use |
US6782462B2 (en) * | 2002-02-25 | 2004-08-24 | International Business Machines Corporation | System and method for tracking memory leaks |
US7007049B2 (en) * | 2002-11-18 | 2006-02-28 | Innopath Software, Inc. | Device memory management during electronic file updating |
EP1614034B1 (en) | 2003-04-11 | 2012-01-25 | Hewlett-Packard Development Company, L.P. | Initialization and update of software and/or firmware in electronic devices |
US20050283771A1 (en) * | 2004-06-22 | 2005-12-22 | Nokia Corporation | System and method for decreasing the memory footprint of applications with automatic memory management systems |
-
2006
- 2006-12-12 US US11/609,360 patent/US7769976B2/en not_active Expired - Fee Related
-
2007
- 2007-11-16 CN CNB2007101927414A patent/CN100573470C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20080140978A1 (en) | 2008-06-12 |
US7769976B2 (en) | 2010-08-03 |
CN101201792A (zh) | 2008-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1304941C (zh) | 用于自主硬件辅助的线程栈跟踪的装置与方法 | |
CN100426298B9 (zh) | 一种垃圾文件清理方法及系统 | |
CN104699423B (zh) | Linux系统中绑定盘符的方法和装置 | |
US8321803B2 (en) | Aggregating service components | |
EP2304609B1 (en) | Paging hierarchical data | |
US20090288028A1 (en) | Apparatus and method for managing content | |
CN101968735B (zh) | 信息处理设备及其控制方法 | |
JP5452030B2 (ja) | 統合ログ生成装置及び統合ログ生成プログラム及び記録媒体 | |
JP2003519834A (ja) | メモリ管理によって参照の局所性を改善するための方法および装置 | |
TW201101068A (en) | Automatic query execution plan management and performance stabilization for workloads | |
US8438557B2 (en) | Reusing an application object | |
CN102622210A (zh) | 一种显示帮助信息的方法和装置 | |
CN102915376A (zh) | 检测数据库异常行为的方法和设备 | |
US20100057770A1 (en) | System and method of file management, and recording medium storing file management program | |
CN100573470C (zh) | 计算机程序运行时分析方法 | |
WO2021197273A1 (zh) | 冗余代码去除方法、装置、设备与计算机可读存储介质 | |
CN108717516A (zh) | 文件标签方法、终端及介质 | |
CN101634965B (zh) | 一种Linux内核级单元测试的方法 | |
CN105550573A (zh) | 拦截捆绑软件的方法和装置 | |
CN102436396A (zh) | 一种应用集成调用方法及系统 | |
JP5013999B2 (ja) | 画像形成装置、プログラム制御方法、及び制御プログラム | |
CN102597995A (zh) | 同步数据库和非数据库资源 | |
CN102419758A (zh) | 数据处理系统及方法 | |
CN112559638B (zh) | 数据同步的方法、装置、设备和存储介质 | |
CN115578096A (zh) | 区块链并行交易方法、装置、设备和存储介质 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091223 Termination date: 20151116 |
|
EXPY | Termination of patent right or utility model |