平码五不中公式规律
  • / 33
  • 下载费用:30 金币  

通过使用趋势相关性的存储器泄漏分析.pdf

关 键 ?#21097;?/dt>
通过 使用 趋势 相关性 存储器 泄漏 分析
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
摘要
申请专利号:

CN201580048644.0

申请日:

2015.09.07

公开号:

CN106663049A

公开日:

2017.05.10

当前法律状态:

实审

有效性:

审中

法?#19978;?#24773;: 实质审查的生效IPC(主分类):G06F 11/36申请日:20150907|||公开
IPC分类号: G06F11/36 主分类号: G06F11/36
申请人: 微软技术许可有限责任公司
发明人: A·M·亚伯拉罕; B·克?#36879;?#24503;; D·范恩; 范菁; D·J·罗森
地址: 美国华盛顿州
优先权: 2014.09.09 US 14/481,687
专利代理机构: 北京市金杜律师事务所 11256 代理人: 王茂华;辛鸣
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201580048644.0

授权公告号:

|||

法律状态公告日:

2017.06.06|||2017.05.10

法律状态类型:

实质审查的生效|||公开

摘要

工具和技术通过使用数据类型存储器使用趋势的相关性来辅助开发者检测存储器泄漏。具体而言,通过使用这些工具和技术以标识泄漏相关的数据类型,可以将对存储器泄漏的调查优先化而没有总是求助于使用庞杂和降低性能的存储器转储。处理关于程序的存储器使用的数据以针对相应的数据类型标识随时间的存储器使用趋势,并?#20197;?#36235;势中搜索显著相关性。对相关的趋势(并且因此对它们的对应的数据类型)进行分组。对于分组的数据类型显示存储器使用分析信息,?#28909;?#26368;迅速地泄漏数据类型的名称、相关的数据类型的名称、泄漏速率以及在存储器大小和/或数据对象计数方面的泄漏数量。存储器使用数据也可以与处理加载请求相关以指示哪些请求具有关联的存储器泄漏。

权利要求书

1.一种用于通过辅助对具有处理负荷并且使用存储器的软件程序中的存储器泄漏的
检测来改进计算机的运作的计算过程,所述过程包括:
(a)获得包括存储器使用采样的存储器使用数据,所述存储器使用采样共同地指定多
个数据类型,每个存储器使用采样指定在指定的采样时间用于所述数据类型中的至少一个
数据类型的至少一个使用统计量的值;
(b)通过利用处理器处理所述存储器使用数据的至少部分,来针对多个所述数据类型
而计算地标识随时间的相应的存储器使用趋势;
(c)计算地搜索在数据类型存储器使用趋势之间的相关性;
(d)计算地将数据类型分组成存储器使用趋势相关的组,从而使得给定的存储器使用
趋势相关的组中的所有数据类型具有满足预定趋势相关性标准的存储器使用趋势,并且其
趋势没有满足所述预定趋势相关性标准的数据类型不在所述给定的存储器使用趋势相关
的组中;以及
(e)使用分组步骤的结果。
2.根据权利要求1所述的计算过程,其中所述预定趋势相关性标准在并且仅在趋势具
有超出预定相关性阈值的相关性系数时指定所述趋势相关。
3.根据权利要求1所述的计算过程,其中用于所述数据类型中的每个数据类型的使用
统计量包括以下各项中的至少一项:
指示所述数据类型的多少项目被分配的计数;
指示所述数据类型的多少项目被取消分配的计数;
指示多少存储器被指明为被分配给所述数据类型的项目的存储器大小;
指示多少被指明为被分配给所述数据类型的项目的存储器被取消分配的存储器大小。
4.根据权利要求1所述的计算过程,其中计算地标识相应的存储器使用趋势包括以下
各项中的至少一项:
使用最小平方来执行简单线性回归以将使用统计量拟合到线性趋势;
执行分段回归以将使用统计量拟合到逐段线性趋势;
执行非线性回归以将使用统计量拟合到非线性趋势。
5.根据权利要求1所述的计算过程,其中计算地搜索在数据类型存储器使用趋势之间
的相关性包括以下各项中的至少一项:
确定用于数据类型存储器使用趋势的Pearson乘积-瞬间相关性系数;
确定用于数据类型存储器使用趋势的Spearman秩相关性系数;
确定用于数据类型存储器使用趋势的Kendall秩相关性系数;
确定用于数据类型存储器使用趋势的距离相关性;
确定用于数据类型存储器使用趋势的距离协方差;
确定用于数据类型存储器使用趋势的Brownian距离协方差。
6.根据权利要求1所述的计算过程,其中计算地标识相应的存储器使用趋势包括将用
于所述处理负荷的使用统计量归一化。
7.根据权利要求1所述的计算过程,其中计算地将数据类型分组成存储器使用趋势相
关的组包括对具有如下趋势的两个数据类型分组,所述趋势具?#24615;?#39044;定阈值以上的相关性
系数,即使所述趋势具有不同增长速率。
8.一种被配置有数据和指令的计算机可读存储介?#21097;?#25152;述指令在由至少一个处理器执
行时,使得所述处理器执行用于辅助对具有处理负荷并且使用存储器的软件中的存储器泄
漏的检测的技术过程,所述过程包括以下步骤:
(a)获得包括存储器使用采样的存储器使用数据,所述存储器使用采样共同地指定多
个数据类型,每个存储器使用采样指定在指定的采样时间用于所述数据类型中的至少一个
数据类型的至少一个使用统计量的值;
(b)通过利用处理器处理所述存储器使用数据的至少部分,来针对多个所述数据类型
而计算地标识随时间的相应的存储器使用趋势;
(c)计算地搜索在数据类型存储器使用趋势之间的相关性;
(d)计算地将数据类型分组成存储器使用趋势相关的组,从而使得给定的存储器使用
趋势相关的组中的所有数据类型具有满足预定趋势相关性标准的存储器使用趋势,所述预
定趋势相关性标准在趋势具有超出预定相关性阈值的相关性系数时指定所述趋势相关。
9.根据权利要求8所述的配置的存储介?#21097;?#20854;中所述预定相关性阈值在范围从-1到+1
的相关性系数标度上具有至少0.5的绝对值。
10.根据权利要求8所述的配置的存储介?#21097;?#20854;中所述过程还包括以下各项中的至少两
项:
显示在向用户被标识为具有最多存储器泄漏的组中的数据类型的数据类型名称;
显示在向用户被标识为具有用户定义的数据类型的最多存储器泄漏的组中的所述用
户定义的数据类型的数据类型名称;
显示用于特定数据类型的估计的泄漏大小;
显示用于特定数据类型的以每单位时间的存储器大小为单位的估计的泄漏速?#21097;?br />显示用于特定数据类型的估计的泄漏项目计数;
显示用于特定数据类型的以每单位时间的项目计数为单位的估计的泄漏速?#21097;?br />响应于估计的泄漏项目计数来重新启动过程;
响应于估计的泄漏速率来重新启动过程。
11.一种存储器分析计算机?#20302;常?#34987;配置有存储器分析辅助,所述存储器分析辅助用于
通过辅助对具有处理负荷并且使用存储器的软件中的存储器泄漏的检测来改进所述存储
器分析计算机?#20302;?#26412;身的运作或者另一计算机?#20302;?#30340;运作,所述存储器分析计算机?#20302;?#21253;
括:
逻辑处理器;
与所述逻辑处理器可操作地通信的存储器;
驻留在所述存储器中的趋势相关性标准;以及
驻留在所述存储器中并且具有指令的存储器分析工具,所述指令由所述处理器可执行
以针对多个数据类型而标识随时间的相应的存储器使用趋势,搜索在数据类型存储器使用
趋势之间的相关性,以及将数据类型分组成存储器使用趋势相关的组,从而使得给定的存
储器使用趋势相关的组中的所有数据类型具有满足所述趋势相关性标准的存储器使用趋
势,并且其趋势没有满足所述趋势相关性标准的数据类型不在所述给定的存储器使用趋势
相关的组中。
12.根据权利要求11所述的存储器分析计算机?#20302;常?#20854;中所述?#20302;?#21253;括显示器,并且所
述存储器分析工具包括软件,所述软件显示以下项目中的至少两个项目:
在向用户被标识为具有最多存储器泄漏的组中的数据类型的数据类型名称;
在被标识为具有用户定义的数据类型的最多存储器泄漏的组中的所述用户定义的数
据类型的数据类型名称;
用于特定数据类型的估计的泄漏大小;
用于特定数据类型的以每单位时间的存储器大小为单位的估计的泄漏速?#21097;?br />用于特定数据类型的估计的泄漏项目计数;
用于特定数据类型的以每单位时间的项目计数为单位的估计的泄漏速率。
13.根据权利要求11所述的存储器分析计算机?#20302;常?#20854;中所述趋势相关性标?#21450;?#25324;在
范围从-1到+1的相关性系数标度上具有至少0.45的绝对值的相关性阈值。
14.根据权利要求11所述的存储器分析计算机?#20302;常?#20854;中所述存储器分析工具至少部
分通过计算以下各项中的至少一项来搜索在数据类型存储器使用趋势之间的相关性:
用于数据类型存储器使用趋势的Pearson乘积-瞬间相关性系数;
用于数据类型存储器使用趋势的Spearman秩相关性系数;
用于数据类型存储器使用趋势的Kendall秩相关性系数;
用于数据类型存储器使用趋势的统计地显著相关性系数;
用于数据类型存储器使用趋势的距离相关性。
15.根据权利要求11所述的存储器分析计算机?#20302;常?#20854;中所述存储器分析工具包括显
示数据类型存储器使用趋势的图形的图形用户界面和软件。

说明书

通过使用趋势相关性的存储器泄漏分析

背景技术

存储器泄漏是计算机编程中的常见错误。它们出现在存储器被表观地或者实?#23454;?br />分配用于由程序使用、但是没有被使用并且由于它尚未被释放用于使用而将不被使用时。
因此,存储器可能变成在效果上不可用于计算使用,直至进程重新启动和/或计算?#20302;持?#26032;
引导并且没有被?#20302;?#21644;其它进程取用的所有存储器被再次标记为可用于使用。泄漏减少可
用存储器的总数量,这最终地减少或者终止在?#20302;成显?#34892;的软件的功能,直?#26009;低?#34987;再次
重新引导。泄漏的存储器最常见地是用户空间随机存取存储器(RAM),但是其它类型的存储
器(?#28909;?#20869;核RAM和硬盘存储装置)也经受到泄漏。

发明内容

一些实施例涉及检测存储器泄漏这一技术问题。一些实施例涉及向软件开发者提
供辅助对特定程序中的存储器泄漏的具体原因的标识的信息这一技术问题。一些实施例涉
及这两个问题和/或计算领域技术人员清楚的其它问题。

实施例中的一些实施例通过辅助对在计算机(即,具有至少一个处理器和存储器
的设备)?#26174;?#34892;的软件程序中的存储器泄漏的检测来帮助改进计算机的运作。软件程序具
有处理器负荷并且使用存储器。获得关于程序的存储器使用的数据。存储器使用数据包括
共同地指定多个数据类型的存储器使用采样。每个存储器使用采样指定在指定的采样时
间、用于数据类型中的至少一个数据类型的至少一个使用统计量的值。

一些实施例通过利用处理器来处理存储器使用数据的至少部分,来针对多个数据
类型而计算地标识随时间的存储器使用趋势。利用标识的至少两个这样的趋势,这些实施
例计算地搜索在数据类型存储器使用趋势之间的相关性。在?#19994;?#30456;关性时,对相关的趋势
(并且因此对它们的对应的数据类型)分组。也就是说,实施例计算地将数据类型分组成存
储器使用趋势相关的组。给定的组中的数据类型往往关于存储器使用相似地表现。给定的
存储器使用趋势相关的组中的所有数据类型具有满足预定趋势相关性标准的存储器使用
趋势。其趋势不满足预定趋势相关性标准的数据类型不在给定的存储器使用趋势相关的组
中。一些实施例然后显示关于分组的数据类型的存储器使用分析信息。例如,可以显示最迅
速地泄漏数据类型的名称。作为另一示例,实施例可以显示开始时全部被示出?#36127;?#27809;有或
者没有泄漏、并且然后全部被示出泄漏迸发、并且然后再次被示出?#36127;?#27809;有或者没有泄漏
的一组数据类型的名称。

这里给出的这些和其它示例仅为说明性的。这一发明内容没有旨在于标识要求保
护的主题内容的关键特征或者实质特征,它也没有旨在于用来限制要求保护的主题内容的
范围。实际上,提供这一发明内容以(以简化形式)介绍以下在具体实施方式中进一步描述
的一些技术概念。利用权利要求定义创新,并?#20197;?#36825;一发明内容与权利要求冲突的范围内,
应当以权利要求为准。

附图说明

将参照附图给出更具体描述。这些附图仅图示了选择的方面,并且因此没?#22411;?#20840;
地确定覆盖或者范围。

图1是图示了计算机?#20302;?#24182;且也图示了配置的存储介质(有别于仅传播的信号)实
施例的框图,该计算机?#20302;?#20855;?#24615;?#21487;以针对存储器泄露被分析的软件、可以分析存储器泄
漏的软件或者二者的控制之下相互交互的至少一个处理器和至少一个存储器以及在可以
在多个网络节点上存在的操作环境中的其它项目;

图2是图示了在示例架构中、通过经由使用趋势相关性的存储器泄漏分析来改进
计算?#20302;?#21151;能的工具和技术的方面的框图;

图3是图示了一些进程和配置的存储介质实施例的步骤的流程图;

图4是图示了在示例架构中、通过使用趋势相关性的存储器泄漏分析的方面的数
据流图;

图5是图示了数据类型的示例存储器使用趋势(也被称为例如“类型趋势”或者“使
用趋势”)的图表;

图6是图示了使用线性回归以将图5的存储器使用趋势拟合到线性函数以促进对
于在数据类型存储器使用趋势之间的相关性的搜索和/或提供存储器使用分析信息(?#28909;?br />估计的泄漏速率和估计的泄漏大小)的图表;

图7是图示了相关的两个存储器使用趋势(也被称为例如“接近地有关的趋势”或
者“有关的趋势”)的图表;

图8是图示了不相关的两个存储器使用趋势(也被称为例如“无关的趋势”)的图
表;

图9是图示了即使其相应的增长速率不同也仍然相关的两个存储器使用趋势的图
表;

图10是图示了可以用来呈现关于数据类型的存储器使用分析信息的许多可能的
图形用户界面(GUI)中的一些GUI的屏幕描绘;

图11是示出用于数据类型之一的扩展的?#38468;?#30340;、图10的GUI的不同屏幕描绘;以及

图12是图示可类型直方图的内容的表格。

具体实施方式

首字母缩写词和简写词

以下定义了一些首字母缩写词和简?#21019;剩?#20294;是其它首字母缩写词和简写词可以在
这里别处加以定义或者无需定义即为本领域技术人员所理解。

ALU:算术和逻辑单元

API:应用程序接口

App:应用

CD:紧致盘

CPU:中央处理单元

DVD:数字万用盘或者数?#36136;?#39057;盘

FPGA?#21512;?#22330;可编程门阵列

FPU:浮点处理单元

GC:垃圾收集

GPU?#21644;?#24418;处理单元

GUI?#21644;?#24418;用户界面

IDE:集成开发环?#24120;?#26377;?#24065;?#34987;称为“交互开发环境”

PII:个人可标识信息

RAM:随机存取存储器

ROM:只读存储器

概述

存储器泄漏检测是困难问题和重要的问题。在许多计算?#20302;?#20013;,每个进程得到虚
拟地址空间。存储器泄漏消耗虚拟地址空间以及物理存储器(直至存储器页面得以被分页
到盘)。对于应用存储器泄漏,重新启动进程可以使分配的存储器返回到?#20302;常?#20294;是重新启
动并不总是方便的。在一些计算?#20302;?比?#24230;?#24335;?#20302;?#25110;者缺乏分离进程地址空间的?#20302;?
中,使丢失的存储器返回到?#20302;?#21487;能需要重新引导整个?#20302;场?#19968;些熟悉的方式?#35272;?#20110;对大
存储器转储的收集和分析,而这里描述的实施例提供了一种用于转储分析的备选方式(或
者有帮助的前序)。转储分析经常涉及从部署环境收集存储器转储并且将转储文件移动到
开发环境以用于利用存储器工具分析。通常地,两个或者更多转储在不同时间点被收集和
差异化(也被称为diff)以标识已经增加了引用的对象的大小/计数的存储器分配树根。这
一过程的繁重和复杂性使得存储器泄漏检测对于普通开发者而言不是很上手,并且经常看
见这一任务?#19994;?#22242;队中的最有技能的开发者。

存储器转储的一个优点是它们具有引用图表信息。利用这一信息和足够时间,将
最可能标识存储器泄漏问题的来源。转储也可以具有可以在一些分析中有用的实例信息。
例如,能够检查串的值以猜测它来自何处可能有帮助。缺点是可能泄漏PII,并且因此值可
能没?#24615;?#25152;有情形中可用。

存储器转储也具有缺点。对转储的收集通常地对机器的性能具有?#22909;?#24433;响。因此,
如果这在用于web app的生产服务器上被完成,则将看见app的每秒请求数的显著下降。转
储也是庞大的,因此它们占用大量驱动空间,并?#20197;?#26426;器之间移动它们减少可用网络带宽。
存储器转储分析通常涉及在存储器堆树内筛查以?#19994;?#20855;有大于预计的引用的节点或者在
正diff的情况下?#19994;?#22823;小/计数的登记的最大增加的节点。这固有地是繁琐的过程。另外,
对应用的请求负荷经常对转储的内容具有影响,并且因此影响diff过程。转储内容也在环
?#25345;?#38388;变化。当在垃圾收集环境中捕获引用图表时,它通常不包含对垃圾的引用,而是仅包
含活跃(具有至少一个引用)的的对象。在非垃圾收集环境中,引用的存储器的泄漏以及未
引用但是从未被释放的存储器的泄漏可能出现。

可以在更广义的情境中查看这里描述的一些实施例。例如,概念(?#28909;?#30456;关性、存
储器使用、采样和趋势)可以与一个具体实施例相关。然而,它没有得自于如下广义情境的
可用性:这里在专有权中寻求抽象想法;它们没有。实际上,本公开内容聚焦于提供其技术
效果完全地或者部分地解决了特定技术问题的适当地专属的实施例。涉及相关性、存储器
使用、采样和/或趋势的其它介质、?#20302;?#21644;方法在本范围以外。因而,在对本公开内容的恰当
理解之下也避免了含糊、仅抽象、缺乏技术特点和附带的证明问题。

实施例的性质

这里描述的实施例的技术特点将为本领域普通技术人员所清楚,并且也将在若干
方式中为广泛留心的读者所清楚。首先,一些实施例解决技术问题,?#28909;?#26816;测存储器泄漏的
存在和提供帮助开发者更高效地标识存储器泄漏的来源的信息。第二,一些实施例包括技
术部件,?#28909;?#20197;超出在通用计算机内的典型交互的方式与软件交互的计算硬件。例如,除了
正常交互(?#28909;?#19968;般的存储器分配、一般的存储器读取和写入、一般的指令执行以及某类I/
O)之外,这里描述的一些实施例标识数据类型存储器使用趋势、搜索相关的数据类型存储
器使用趋势并且显示关于相关性及其构成趋势和数据类型的信息。第三,由一些实施例提
供的技术效果最终地包括通过去除存储器泄漏对软件功能的高效改进而没有?#35272;?#20110;对存
储器转储的收集、传送和分析。其它技术效果也将在阅读本公开内容时为本领域技术人员
所清楚。

本领域技术人员理解,技术效果是一个技术实施例的假定目的。例如,在一个实施
例中涉及计算并且没有技术部件(例如,用纸和笔或者甚至脑力步骤)也可以执行一些计算
这仅有的事实没有去除技术效果的存在或者变更实施例的具体和技术性质。

参照示例实施例(?#28909;?#22312;附图?#22411;?#31034;的实施例),并且这里使用具体言语描述它
们。但是本领域并且拥有本公开内容的技术人员将想到的、这里图示的特征的变更和更多
修改以及由这里的具体实施例举例说明的抽象原理的附加技术应用应当被视为在权利要
求的范围内。

术语

在本公开内容中阐明术语的含义,因此阅读权利要求应当仔细注意这些阐明。给
出了具体示例,但是本领域技术人员将理解,其它示例也可以落入使用的术语的含义内和
一个或者多个权利要求的范围内。术语未必具有它们在一般使用中(特别地在非技术使用
中)或者在特定行业的使用或者在特定一个词典或者词典集合中具有的相同含义。标号可
以与各种措词一起被使用以帮助示出术语的广度。从给定的一段文本省略标号未必意味着
附图的内容没有被文本?#33268;邸?#21457;明人主张和实行他们对他们自己的词典编撰的权利。明确
地定义引用的术语,但是在隐含地定义术语时没有使用引号。这里在具体实施方式中和/或
在申请文件中别处明确地或者隐含地定义术语。

如这里所用,“计算机?#20302;场?#21487;以例如包括一个或者多个服务器、母板、处理节点、
个人计算机(便携或否)、个人数字助理、智能电话、蜂窝或者移动电话、至少具有处理器和
存储器的其它移动设备和/或提供至少部分由指令控制的一个或者多个处理器的其它设
备。指令可以是以在存储器和/或专门化的电?#20998;?#30340;固件或者其它软件的形式。具体而言,
虽然可以出?#20013;?#22810;实施例在工作站或者膝上型计算机?#26174;?#34892;,但是其它实施例可以在其它
计算设备?#26174;?#34892;,,并且任?#25105;?#20010;或者多个这样的设备可以是给定的实施例的部分。

“多线程”计算机?#20302;?#26159;支持多个执行线程的计算机?#20302;场?#26415;语“线程”应当被理解
为包括能够或者受到调度(和可能的同步)的任?#26410;?#30721;,并且也可以被称为其它名称,如例
如“任务”、“进程”或者“协同例程”。线程可以并行、?#26469;?#25110;者在并行执行(例如,多处理)和
?#26469;?#25191;行(例如,时间分片)的组合?#24615;?#34892;。已经在各种配置中设计了多线程环境。执行线程
可以并?#24615;?#34892;,或者线程可以被组织用于并行执行,但是实?#23454;?#21462;得多轮?#26469;?#25191;行。可以例
如在多处理环?#25345;性?#19981;同核上执行不同线程、通过在单个处理器核上时间分片不同线程或
者通过时间分片和多处理器线程的某个组合来实施多线程。线程情境切换可以例如由内核
的线程调度器、由用户空间信号或者由用户空间和内?#30636;?#20316;的组合发起。线程可以?#26469;?#23545;
共享的数据的多轮操作,或者每个线程可以例如对它自己的数据操作。

“逻辑处理器”或者“处理器”是单个独立硬件线程处理单元,?#28909;?#22312;同时多线程实
现方式中的核。作为另一示例,每个核运行两个线程的超线程四核芯片具有八个逻辑处理
器。逻辑处理器包括硬件。术语“逻辑”用来防止给定的芯片具有至多一个处理器这样的错
误结论;这里可互换地使用“逻辑处理器”和“处理器”。处理器可以是通用的,或者它们可以
被定制用于专属使用,?#28909;?#22270;形处理、信号处理、浮点算术处理、?#29992;堋/O处理等?#21462;?br />

“多处理器”计算机?#20302;?#26159;具有多个逻辑处理器的计算机?#20302;场?#22810;处理器环境出现
在各种配置中。在一个给定的配置中,所有处理器可以功能等同,而在另一配置中,一些处
理器可以借助具有不同硬件能力、不同软件指派或者二者而不同于其它处理器。根据配置,
处理器可以在单个总线上被相互紧密地耦合,或者它们可以被松散地耦合。在一些配置中,
处理器共享中央处理器,在一些配置中,它们各自具有它们自己的?#38236;?#22788;理器,并?#20197;?#19968;些
配置中,共享和?#38236;?#23384;储器二者存在。

“内核”包括操作?#20302;场?#31649;理程序、虚拟机、BIOS代码和相似硬件接口软件。

“代码?#24065;?#21619;着处理器指令、数据(包括常数、变量和数据结构)或者指令和数据二
者。

这里广义地使用“程序”以包括应用、内核、驱动程序、中断处置程序、库和由程序
员(也被称为开发者)编写的其它代码。

如这里所用,“包括(include)?#32972;?#38750;另有?#29575;?#21017;允许附加元素(即包括(include)
意味着包括(comprise))。“由……构成?#24065;?#21619;着实质上或者完全由……构成。在可以?#26434;?#22320;
变更、去除和/或添加X的如果有的非Y部分而没有只要涉及?#33268;?#30340;权利要求就变更要求保
护的实施例的功能时,X实质上由Y构成。

“进程(process)”这里有时用作计算科学领域的术语并?#20197;?#35813;技术意义上涵盖资
源用户、即例如协同例程、线程、任务、中断处置程序、应用进程、内核进程、过程
(procedure)和对象方法。“过程(process)”这里也用作专利法领域术语,例如,在描述过程
权利要求有别于?#20302;?#26435;利要求或者制造品(配置的存储介质)权利要求时。相似地,“方法”
这里有时用作计算科学领域中的技术术语(一种“例程”)并且也用作专利法领域术语(“过
程(process)”)。本领域技术人员将理解在特定实例中旨在于是哪个含义,并且也将理解有
时可以使用一个或者多个进程或者方法(在计算科学意义上)实施给定的要求保护的过程
或者方法(在专利法意义上)。

“自动地?#24065;?#21619;着通过使用自动化(例如,由软件配置用于这里?#33268;?#30340;专属操作和
技术效果的通用计算硬件)有别于没有自动化。具体而言,“自动地”执行的步骤没?#24615;?#32440;上
用?#21482;?#32773;在人的?#32442;?#20013;执行,尽管它们可以由人类发起或者由人类交互地指导。用机器执
行自动步骤以便获得没有用这样提供的技术交互就不会实现的一个或者多个技术效果。

“计算地(computationally)”类似地意味着使用计算设备(至少处理器加上存储
器)并且排除通过仅人类思考或者仅人类动作获得结果。例如,用笔和纸做算术不是如这里
理解的那样计算地进行算术。计算结果更快速、更广泛、更深入、更准确、更一致、更全面和/
或以别的方式提供超出单独人类执行的范围的技术效果。“计算步骤”是被计算地执行的步
骤。“自动地”或者“计算地”均未必地意味着“立即地”。这里可互换地使用“计算地”和“自动
地”。

“前摄地?#24065;?#21619;着没有来自用户的直接请求。实际上,用户甚至直至已经向用户呈
?#33267;?#19968;个实施例的前摄步骤的结果才认识到该步骤是有可能的。除非另有?#29575;觶?#21542;则也可
以前摄地完成这里描述的任何计算和/或自动步骤。

贯穿文本,使用可选复数意味着指示的特征中的一个或者多个特征存在。例如,
“处理器?#24065;?#21619;着“一个或者多个处理器”或者等效地意味着“至少一个处理器”。

贯穿本文,除非另有明确地?#29575;觶?#23545;过程中的步骤的任?#25105;?#29992;假定该步骤可以由
兴趣方直接地执行和/或由该方通过?#31245;?#26426;制和/或?#31245;?#23454;体间接地执行而仍然落在该步
骤的范围内。也就是说,如果直接执行不是明确地?#29575;?#30340;要求,就没有要求由兴趣方直接执
行该步骤。例如,涉及兴趣方的动作(?#28909;?#20851;于目的地或者其它主体分配、分析、计算、相关、
取消分配、确定、显示、估计、拟合、绘图、分组、标识、指示、正规化、获得、执行、处理、采样、
满足、搜索、指定(或者分配、已分配、分析、已分析等)的步骤)可以涉及某个其它方的?#31245;?br />动作(?#28909;?#36716;发、复制、上传、下载、编码、解码、压缩、解压、?#29992;堋?#35299;密、?#29616;ぁ?#35843;用等等),而
仍然被理解为由兴趣方直接地执行。

无论何时参照数据或者指令,应理解这些项目配置计算机可读存储器和/或计算
机可读存储介?#21097;?#30001;此将它变换成特定物品,例如,有别于简单地存在于纸上、人的脑海中
或者仅为在接线上传播信号。除非在权利要求中以别的方式明确地?#29575;觶?#21542;则权利要求没
有覆盖信号本身。为了在美国的专利保护,存储器或者其它计算机可读存储介质不是在In
re Nuijten案例的美国专利和商标局(USPTO)解释之下的可授予专利的主题内容的范围以
外的传播信号或者载波。

另外,尽管这里别处有任何明显地相反之处,但是将理解在(a)一个方面的计算机
可读存储介质和计算机可读存储器与(b)另一方面的传输介质(也被称为信号介质)之间的
清楚不同。传输介质是传播信号或者载波计算机可读介质。对照而言,计算机可读存储介质
和计算机可读存储器不是传播信号或者载波计算机可读介质。在美国,“计算机可读介质”
意味着计算机可读存储介质而不是传播信号本身。

“实施例”在这里是示例。术语“实施例”与“本发明”不可交换。实施例可以?#26434;?#22320;
共享或者借用各方面以产生其它实施例(假如结果可操作),即使这里没有明确地描述所得
方面组合本身。要求明确地描述每一个允许的组合对于本领域技术人员没有必要并且将与
如下政策相矛盾,这些政策公认专利说明书是为作为本领域技术人员的读者而撰写的。关
于由甚至少量可组合的特征产生的可能组合的数目的正式组合计算和非正式普遍?#26412;?#20063;
将指示大量方面组合对于这里描述的方面是存在的。因而,要求明确记载每一个组合将与
如下政策有矛盾,这些政策需要专利说明书简明而读者在涉及的技术领域内有知识。

操作环境

参照图1,用于一个实施例的操作环境100可以包括计算机?#20302;?02。计算机?#20302;?br />102可以是多处理器计算机?#20302;?#25110;者不是。操作环境可以包括给定的计算机?#20302;?#20013;的可以
被群集、客户方-服务器联网和/或对等联网的一个或者多个机器。个别机器是计算机?#20302;常?br />并且一组协作机器也是计算机?#20302;场?#21487;以配置给定的计算机?#20302;?02以用于终端用户,例
如,与应用一起、用于管理员、作为服务器、作为分布式处理节点和/或以其它方式。

人类用户104可以通过使用显示器、键盘和其它外围设备106经由键入的文本、触
摸、语音、移动、计算机视觉、手势和/或其它形式的I/O来与计算机?#20302;?02交互。用户界面
可以支持在一个实施例与一个或者多个人类用户之间的交互。用户界面可以包括命令行界
面、图形用户界面(GUI)、自然用户界面(NUI)、语音命令界面和/或其它界面呈现。例如,可
以在?#38236;?#21488;式计算机上或者在智能电话上生成用户界面,或者可以从web服务器生成并且
向客户端发送它。用户界面可以被生成作为服务的部分,并且它可以与其它服务(?#28909;?#31038;交
联网服务)集成。给定的操作环境包括支持这些不同用户界面生成选项和使用的设备和基
础结构。

自然用户界面(NUI)操作可以例如使用话音识别、触摸和触笔识别、在屏幕上和与
屏幕相邻二者的手势识别、空气手势、头部和眼睛跟踪、语音和话音、视觉、触摸、手势和/或
机器智能。NUI技术的一些示例包括触敏显示器、语音和话音识别、意图和目标理解、使用深
度相机(?#28909;?#31435;体相机?#20302;场?#32418;外线相机?#20302;场GB相机?#20302;?#21450;其组合)的运动手势检测、使
用加速度计/陀螺仪的运动手势检测、脸部识别、3D显示器、头部、眼睛和凝视跟踪、?#20004;?#24335;
增强现实和虚拟现实?#20302;常?#25152;有这些示例提供更自然的界面以及用于使用电场感测电极
(脑电图和有关的工具)来感测脑部活动的技术。

本领域技术人员将认识到,这里在“操作环境”之下呈现的前述方面和其它方面也
可以形成一个给定的实施例的部分。本文的标题没有旨在于提供将特征严格分类成实施例
和非实施例特征类。

作为另一示例,游戏可以驻留在Microsoft XBOX(微软公司的商标)服务
器上。可以从控制台购买游戏,并且可以完全或者部分在服务器上、在控制台上或者在二者
上执行它。多个用户可以与使用标准控制器、空气手势、语音或者使用配套设备(?#28909;?#26234;能
电话或者平板计算机)的游?#26041;?#20114;。给定的操作环境包括支持这些不同使用场景的设备和
基础结构。

?#20302;?#31649;理员、开发者、工程师和终端用户各自是特定类型的用户104。代表一个或
者多个人进行动作的自动化代理、脚本、回放软件等也可以是用户104。存储设备和/或联网
设备可以在一些实施例中被视为外围设备。在图1中未示出的其它计算机?#20302;?#21487;以例如经
由网络接口设备、使用与网络108的一个或者多个连接来与计算机?#20302;?02或者与另一?#20302;?br />实施例以技术方式交互。

计算机?#20302;?02包括至少一个逻辑处理器110。计算机?#20302;?02如同其它适当?#20302;?br />也包括一个或者多个计算机可读存储介质112。介质112可以是不同物理类型。介质112可以
是?#36164;?#24615;存储器、?#19988;资?#24615;存储器、固定就位的介质、可去除介质、磁介质、光介质、固态介
质和/或其它类型的物理耐用存储介质(有别于仅传播的信号)。具体而言,配置的介质114、
?#28909;?#20415;携(即,外部)硬驱动、CD、DVD、?#19988;?#26834;或者其它可去除?#19988;资?#24615;存储器介质可以在被
插入或者以别的方式安装时在功能上变成计算机?#20302;?#30340;技术部分,从而使得它的内容可访
问以用于与处理器110的交互和由处理器110使用。可去除的配置的介质114是计算机可读
存储介质112的示例。计算机可读存储介质112的一些其它示例包括用户104不容易可去除
的内置RAM、ROM、硬盘和其它存储器存储设备。为了符合当前美国专利要求,计算机可读介
质和计算机可读存储介质以及计算机可读存储器都不是信号本身。

向介质114配置可由处理器110执行的指令116;这里在广义上使用“可执行”以例
如包括机器代码、可解译代码、?#32440;?#20195;码和/或在虚拟机?#26174;?#34892;的代码。也可以向介质114配
置通过执行指令116来创建、修改、引用和/或以别的方式以求技术效果的数据118。指令116
和数据118配置它们驻留在其中的存储器或者其它存储介质114;在该存储器或者其它计算
机可读存储介质是给定的计算机?#20302;?#30340;功能部分时,指令116和数据118也配置该计算机系
统。在一些实施例中,数据118的一部分代表现实项目,?#28909;?#20135;品特性、库存、物理测量、设
置、图像、读数、目标、容量等?#21462;?#20063;通过备份、?#25351;础?#25552;交、放弃、重新格式化和/或其它技术
操作来变换这样的数据。

虽然可以将一个实施例描述为由计算设备(例如,通用计算机、蜂窝电话或者游戏
控制台)中的一个或者多个处理器执行的软件指令,但是这样的描述没有意味着穷举所有
可能实施例。本领域技术人员将理解,经常也可以全部或者部分直接地在硬件逻辑中实施
相同或者相似功能以提供相同或者相似技术效果。备选地或者除了软件实现方式之外,这
里描述的技术功能还可以至少部分由一个或者多个硬件逻辑部件执行。例如而没有排除其
它实现方式,一个实施例可以包括硬件逻辑部件,?#28909;?#29616;场可编程门阵列(FPGA)、专用集成
电路(ASIC)、专用标准产品(ASSP)、片上?#20302;?#37096;件(SOC)、复杂可编程逻辑器件(CPLD)和相
似部件。一个实施例的部件可以例如基于它们的输入、输出和/或它们的技术效果而被分组
成交互功能模块。

在所示的环境100中,一个或者多个程序120具有包括数据类型124和数据项目126
(例如,对象实例、记录、结构、节点、数组和链接的数据结构)的代码122。在执行期间,程序
120具有处理负荷128,该处理负荷128例如包括搜索、排序、创建、更新或者以别的方式计算
地处理数据项目。程序120使用存储器112以实现它的处理,并?#20197;?#35768;多情况下,该存储器
112中的一些是以堆存储器130的形式。堆存储器可以经受到自动垃圾收集和/或可以由程
序120直接地管理。其它形式的存储器112一般地也由程序直接地或者间接地使用,?#28909;?#30424;
存储装置、栈存储器和内核空间存储器。可以收集指示正在使用或者使用过存储器112(具
体为堆存储器130)的使用数据132。

在各附图中示出和/或在正文中?#33268;?#30340;代码122、使用数据132和其它项目可以各
自部分地或者完全地驻留在一个或者多个硬件介质112内,由此配置那些介质以求超出在
所有硬件-软件协作操作?#27844;?#26377;的“正常”(即最普遍常见)交互以外的技术效果。除了处理
器110(CPU、ALU、FPU和/或GPU)、存储器/存储介质112显示器134和电池之外,操作环境也可
以包括其它硬件,如例如总线、功?#20351;?#24212;、有线和无线网络接口卡和加速器,这里在本领域
技术人员尚不清楚的程度上描述它们的相应操作。CPU是中央处理单元,ALU是算术和逻辑
单元,FPU是浮点处理单元,并且GPU是图形处理单元。

给定的操作环境100可以包括集成开发环境(IDE)136,该IDE 136向开发者提供协
同软件开发工具,?#28909;?#32534;译器、源代码编辑器、分析器、调试器等等的集合。工具138也可以
存在于任何IDE136以外。用于一些实施例的一些适合的操作环境包括或者帮助创建被配置
为支持程序开发的Visual(微软公司的商标)开发环境。一些适当
的操作环境包括环境(OracleAmerica公司的商标),并且一些操作环境包括使用语
言(?#28909;鏑++或者C#(“C-Sharp”))的环?#24120;?#20294;是这里的教导可与广泛多种编程语言、编程模
型和程序一起可适用。

在各附图中以轮廓形式示出了一个或者多个项目以强调它们未必地是所示操作
环境或者所有环境的部分,而是可以与在如这里?#33268;?#30340;操作环境或者一些实施例中的项目
互操作。没有遵循在任何附图或者任何实施例中必然地需要没有以轮廓形式示出的项目。
具体而言,提供图1是为了方便;在图1中包括一个项目没有意味着在当前创新之前已知该
项目或者对该项目的描述的使用。

?#20302;?br />

图2图示了适合用于与一些实施例一起使用的架构的方面。存储器使用数据132包
括采样202,这些采样202示出了用于特定数据类型124(?#28909;?#31867;或者其它由用户定义的数据
类型)的存储器112使用统计量204,从而例如示出了在创建该数据类型的实例时被分配的
存储器。使用统计量204的值206可以是项目(例如,实例)的数目的计数,或者值206可以跟
踪例如以?#32440;?#25110;者?#21482;?#32773;页面或者扇区为单位的已使用存储器空间的数量。值206具有指
示何时获得值的对应的采样时间208。采样因此相互离散。然而,可以相对于采样的变量的
改变的速率如此接近地在一起来取得采样以至于有效地连续。

存储器分析工具210可以使用一个或者多个趋势相关性标准212来处理存储器使
用数据132,以产生用于个别数据类型124或者多组数据类型的存储器使用趋势,并且通过
标识相关的数据类型存储器使用趋势214来标识相关的多组216数据类型。然后,可以使用
分组和其它存储器使用分析信息218例如作为用于重新启动过程的基础。可以向用户(?#28909;?br />软件开发者)显示信息218。一般地在屏幕或者其它显示器134上的GUI 220中显示信息218,
但是信息218的一些或者所有信息也可以通过向文件写入它或者打印?#37096;?#36125;或者跨网络
108传输它来在目的地显示来被“显示”。存储器使用分析信息218可以例如包括数据类型名
称222、泄漏速率224、指示已丢失存储器空间的泄漏大小226和/或指示已丢失存储器空间
中的数据项目的数目的泄漏计数228。趋势相关性标准212可以例如包括相关性系数230、相
关性系数阈值232和/或相关性协方差234。例如,在一些实施例中,标?#21450;?#25324;用来测量相关
性的技术和用于匹配的选择标准(可以是阈值),例如,{Pearson的系数,>0.6}。

参照图1和图2,一些实施例向计算机?#20302;?02提供逻辑处理器110和存储器介质
112,该逻辑处理器110和存储器介质112由电路、固件和/或软件配置,以通过利用如这里描
述的工具210和其它创新扩?#26500;?#33021;来提供技术效果,?#28909;?#20851;于涉及技术问题(?#28909;?#26816;测和去
除存储器泄漏)的数据类型专属存储器使用趋势的相关性?#19994;健?#30456;关性?#19994;?#25351;示趋势在陈
述的标准212之下是否相关,并且也可以指示相关性的程度,例如,为趋势计算出的相关性
系数。

在一些实施例中,外围设备106(?#28909;?#20154;类用户I/O设备(屏幕、键盘、鼠标、平板计
算机、麦克风、扬声器、运动传感器等))将存在与一个或者多个处理器110和存储器的可操
作通信。然而,也可以在技术?#20302;?#20013;深度地?#24230;?#19968;个实施例,从而使得没有人类用户104与
该实施例直接地交互。软件过程可以是用户104。

在一些实施例中,存储器分析计算机?#20302;?02被配置有用于改进存储器分析计算
机?#20302;?#26412;身的运作或者另一计算机?#20302;?#30340;运作的存储器分析辅助210。功能的改进例如通
过辅助对软件120中的存储器泄漏的检测而被提供,该软件120具有处理负荷128并且使用
存储器112。存储器分析计算机?#20302;?#21253;括逻辑处理器110和与逻辑处理器可操作地通信的存
储器112。趋势相关性标准212驻留在存储器112中作为显式值,或者隐?#38477;?#39547;留在指令116
中。标准212可以例如是单个阈值232,或者阈值和有关要求的布尔组合,例如,标准212可能
需要“大于0.5的Pearson乘积-瞬间相关性系数或者大于0.5的Spearman秩相关性系数”。这
里,如这里别处一样,“或者?#32972;?#38750;另有?#29575;?#21017;为非排他性、也就是说,“或者?#24065;?#21619;着“和/
或”。

驻留在存储器112中的存储器分析工具210具有可由处理器110执行以针对多个数
据类型124而标识随时间的相应的存储器使用趋势的指令116。工具210也具有指令116,该
指令116可执行以搜索在数据类型存储器使用趋势214之间的相关性并且将数据类型分组
成存储器使用趋势相关的组216。对趋势214的分组对应于对趋势代表的数据类型124分组。
给定的存储器使用趋势相关的组中的所有数据类型具有满足趋势相关性标准的存储器使
用趋势,并且其趋势不满足趋势相关性标准的数据类型不在给定的存储器使用趋势相关的
组中。

在一些实施例中,趋势相关性标准212包括在范围从-1到+1的相关性系数标度上
具有至少0.45的绝对值的相关性阈值232。这一包括可以被实现为例如作为硬编码的常数、
作为可配置的默认或者不考虑的默认,和/或作为有条件执行指令116。也可以使用其它阈
值232值,例如,0.4、0.5、0.55,或者任何值是范围,例如,阈值可以在从0.4到0.6的范围中。
阈值232可以例如根据应用120和存储器使用模式而变化。一般而言,设置高阈值增加在找
到真正地有关的类型时的置信度,但是太高的阈值将在选择什么时限制太多。设置低阈值
将在分析中包括更多类型,但是结果可能?#24615;?#22768;。在一些实施例中,阈值和/或相关性方法
(Pearson、Spearman等)交互地可由用户配置。

在一些实施例中,存储器分析计算机工具210至少部分通过对于数据类型存储器
使用趋势计算一个或者多个特定种类的相关性系数230或者相关性协方差234来搜索在数
据类型存储器使用趋势214之间的相关性。一些示例包括用于数据类型存储器使用趋势214
的Pearson乘积-时刻相关性系数、Spearman秩相关性系数、Kendall秩相关性系数、任何统
计上显著的相关性系数或者距离相关性。

一些实施例仅执行趋势标识和相关性功能并且然后存储结果或者传输结果以用
于以后使用。一些实施例将示出超出指定的阈值的存储器丢失的结果视为用于重新启动有
损进程120的触发条件。然而,存储器分析计算机?#20302;?02的一些其它实施例包括显示器
134,并且存储器分析工具210包括软件,该软件显示信息218、?#28909;?#22312;显示的信息中被标识
为具有最多存储器泄漏的组216中的数据类型的数据类型名称222和/或在被标识为具有用
户定义的数据类型124的最多存储器泄漏的组216中的用户定义的数据类型的数据类型名
称222。存储器使用分析信息218也可以包括或者备选地包括用于特定数据类型124的估计
的泄漏大小226、用于特定数据类型124的每单位时间的存储器大小的估计的泄漏速率224、
用于特定数据类型的泄漏的项目126的估计的泄漏的项目计数228和/或用于特定数据类型
的每单位时间的项目计数的估计的泄漏速率224。在一些实施例中,存储器分析工具图形用
户界面220显示数据类型存储器使用趋势的图形322。图形标度可以例如是线性或者对数
的,并且可以随时间绘制存储器大小和/或数据项目计数。散点图、条形图和其它熟悉的图
形格式可以用来显示由创新工具210获得和处理的数据。

在一些实施例中,?#20302;?#21253;括由网络连接的多个计算机。联网接口设备可以使用可
以在给定的计算机?#20302;?#20013;存在的部件(如例如分组交换网络接口卡、无线收发器或者电话
网络接口)来提供向网络108的接入。然而,一个实施例也可以通过直接存储器存取、可去除
?#19988;资?#24615;介质或者其它信息存储-取回和/或传输方式来传达技术数据和/或技术指令,或
者在计算机?#20302;?#20013;的一个实施例可以在没有与其它计算机?#20302;?#36890;信的情况下操作。

一些实施例在“云”计算环境和/或“云”存储环境中操作,在?#27809;?#22659;中没有拥有但
是按照需求提供计算服务。例如,其存储器使用将被分析的程序120可以在联网云中的一个
或者多个设备/?#20302;?02?#26174;?#34892;,可以在云内的更多其它设备上存储和/或处理程序的存储
器使用数据132,并且存储器分析工具210输出可以配置更多其它云设备/?#20302;?02上的显示
器134。

过程

图3在流程图300?#22411;?#31034;了一些过程实施例。在各图中示出或者以别的方式公开的
计数过程可以在一些实施例中例如在脚本的控制或者之下由存储器分析工具210自动地执
行,或者以别的方式需要很少或者不需要同时活的用户输入。除非另有指示,也可以部分自
动地和部分手动地执行过程。在一个给定的实施例中,可以重复过程的零个或者更多个所
示的步骤、可能有待操作于的不同参数或者数据。也可以在与在图3中布局的由上?#26009;滤?#24207;
不同的顺序?#22411;?#25104;在一个实施例中的步骤。可以串行地、以部分地重叠方式或者完全地并
行来执行步骤。流程图300被遍历以指示在过程期间执行的步骤的顺序可以从过程的一个
执行到过程的另一执行而变化。流程图遍历也可以从一个过程实施例到另一过程实施例变
化。步骤也可以被省略、组合、重新命名、重新分组或者以别的方式脱离所示流程,只要执行
的过程可操作并且符合至少一个权利要求。

这里提供示例以帮助举例说明本技术的各方面,但是在本文中给出的示例没有描
述所有可能实施例。实施例不限于这里提供的具体实现方式、布置、显示、特征、方式或者场
景。一个给定的实施例可以例如包括附加或者不同技术特征、机制和/或数据结构并且可以
以别的方式脱离这里提供的示例。

一些实施例提供用于通过辅助检测在具有处理负荷并且使用存储器的软件程序
中的存储器泄漏来改进计算机(膝上型、智能电话、平板计算机、工作站、服务器?#23567;⑶度?#24335;
?#20302;?#31561;)的运作的过程。在一些实施例中,过程包括获得302存储器使用数据132。这可以使
用熟悉的技术(?#28909;?#20195;码仪表化、存储器转储分析、存储器分配器仪表化存储器分配器监视
和/或垃圾收集监视)而被实现,这些技术适于提供用于?#34892;?#36259;的一个或者多个特定数据类
型124的数据采样202。存储器使用采样202共同地指定多个数据类型124,其中每个个别存
储器使用采样指定在指定的采样时间208用于数据类型中的至少一个数据类型的至少一个
使用统计量204的值206。使用统计量的一些示例是存储器大小(以?#32440;凇?#23383;、页面、扇区或者
另一熟悉的单位为单位)和项目计数(其中项目是程序120为其分配一段存储器作为单位的
对象、记录、结构、节点或者其它项目)。

在一些实施例中,过程包括针对多个数据类型而计算地标识304随时间的相应存
储器使用趋势。这例如通过利用处理器处理存储器使用数据的至少部分而被计算地实现;
本领域技术人员将认识到,试图用脑力或者用手标识这些趋势将是愚蠢和无益的努力。具
体而言,可以(部分地或者全部地)通过在采样202之间计算地插值以获得代表趋势的逐段
(piecewise)线性函数或者另一函数的节段来实现趋势标识。可以(部分地或者全部地)通
过计算地拟合存储器使用数据到线性或者逐段线性或者非线性曲线来实现趋势标识304。
拟合可以例如使用线性或者非线性回归与最小平方或者另一度量。最小平方本身包括各种
选项,例如,普通最小平方、广义最小平方、百分比最小平?#38477;鵲取?#27492;外,注意,异常采样可以
在它们没?#22411;?#35745;地显著时被排除。

在一些实施例中,过程包括计算地搜索306在数据类型存储器使用趋势之间的相
关性。可以通过计算在多对或者其它多个元组的趋势214之间的距离的协方差、相关性或者
其它统计测量然后比较结果与预定阈值232和/或一些或者所有其它计算的统计测量来实
现搜索306。例如,具有比用户指定的阈值0.6更大的计算的相关性系数的任?#25105;?#23545;或者其
它元组的趋势在一些实施例中被视为相关。作为另一示例,具有其绝对?#24403;?#40664;?#31995;?#26159;可重
配置的阈值0.4更大的计算的相关性系数的任何元组的趋势214在一些实施例中被视为相
关。作为另一示例,无论哪个汇集的多达N个趋势214具有为利用给定的存储器使用数据132
标识的所有趋势214的给定的汇集而计算出的最大相关性系数(该系数的值可能是无论任
何值)在一些实施例中被视为相关。在本文中,“预定?#24065;?#21619;着在比较计算的统计测量之前指
定。不同统计测量和/或不同阈值值定义不同趋势相关性标准212。

一些实施例基于计算的统计测量计算地将数据类型124分组308成存储器使用趋
势相关的组216。因此,在给定的存储器使用趋势相关的组中的所有数据类型具有满足预定
趋势相关性标准212的存储器使用趋势,而其趋势没有满足预定趋势相关性标准的数据类
型没?#24615;?#32473;定的存储器使用趋势相关的组中。可以在存储器112中将组216例如表示为指
针、索引、句柄或者其它趋势214标识符的列表或者阵列。

一些实施例使用326分组308结果作为用于进一步动作的基础。例如,一些实施例
基于分组308结果来重新启动328已经丢失太多存储器的进程120或者有丢失太多存储器的
趋势的进程。一些实施例显示310关于数据类型分组的存储器使用分析信息218。显示310这
一动作可以配置显示设备134(?#28909;?#23631;幕或者监视器),但是“显示?#24065;?#28085;盖向日志文件
erudite、向打印机传输或者跨网络连接朝着另一设备102传输。一些实施例显示310在向用
户104标识为具有最多存储器泄漏的组216中的数据类型124的数据类型名称222。具体而
言,一些实施例显示310在向用户104标识为具有各种用户定义的数据类型124的最多存储
器泄漏的组216中的数据类型124的数据类型名称222。一些实施例显示310用于特定数据类
型的估计的泄漏大小226(即,估计的泄漏存储器数量)作为该数据类型的项目126。一些实
施例显示310用于特定数据类型124的每单位时间的存储器大小的估计的泄漏速率224。一
些实施例显示310用于特定数据类型124的估计的泄漏项目计数228。一些实施例显示310用
于特定数据类型的每单位时间的项目126计数的估计的泄漏速率224。一些实施例显示310
前述示例的组合。

在一些实施例中,预定趋势相关性标准212在并且仅在趋势214具有超出预定相关
性阈值232的相关性系数230时指定它们相关。在其它实施例中,趋势相关性标准212在趋势
214具有超出预定阈值232的相关性协方差234时指定它们相关。在一些实施例中,趋势相关
性标准212指定阈?#24503;?#36275;条件的布尔组合,例如,具有大于X的Pearson乘积-瞬间相关性系
数和大于Y的Spearman秩相关性系数二者,其中0<X,Y<1。

在一些实施例中,用于数据类型124的使用统计量204包括以下各项中的至少一
项:指示数据类型的多少项目126被分配的计数238;指示数据类型的多少项目126被取消分
配的计数238;指示多少存储器112被指明为被分配给数据类型的项目126的存储器大小
236;指示多少被指明为被分配给数据类型的项目126的存储器112被取消分配的存储器大
小236。存储器112例如由存储器管理器、垃圾收集器、堆测量数据结构、工具仪表化和/或其
它熟悉的机制指明为分配或者取消分配。

在一些实施例中,计算地标识304相应的存储器使用趋势214例如包括以下各项中
的至少一项:使用最小平方来执行313简单线性回归以将使用统计量204拟合到线性趋势
214,执行312分段回归以将使用统计量204拟合到逐段线性趋势214,或者执行312非线性回
归以将使用统计量204拟合到非线性趋势214。为了帮助实现这些计算,例如可以在根据这
里的教导而设计的程序工作流中使用熟悉的统计计算库。在一些实施例中,计算地标识相
应的存储器使用趋势包括将用于使用统计?#21487;?#21450;的程序120的处理负荷的使用统计量214
归一化318。

在一些实施例中,计算地搜索在数据类型存储器使用趋势之间的相关性包括以下
各项中的至少一项:确定314用于数据类型存储器使用趋势214的Pearson乘积-瞬间相关性
系数,确定314用于数据类型存储器使用趋势214的Pearson秩相关性系数,确定314用于数
据类型存储器使用趋势214的Kendall秩相关性系数,确定314用于数据类型存储器使用趋
势214的距离相关性,确定316用于数据类型存储器使用趋势214的距离协方差或者确定316
用于数据类型存储器使用趋势214的Brownian距离协方差。

在一些实施例中,两个(或者更多个)数据类型可以在它们的相应趋势214具?#24615;?br />预定阈值以上的相关性系数时被分组成存储器使用趋势相关的组216,即使趋势具有不同
增长速率。图9图示了显示320用于两个这样的趋势214的趋势图形322的一个示例。

配置的介质

一些实施例包括配置的计算机可读存储介质112。介质112可以包括盘(磁、光或者
别的方式)、RAM、EEPROM或者其它ROM和/或其它可配置的存储器,包括具体为计算机可读介
质(有别于仅传播的信号)。配置的存储介质可以具体地是可去除存储介质114、?#28909;鏑D、DVD
或者闪存。可以可去除或者不可去除和可以是?#19988;资?#24615;或者?#19988;资?#24615;的通用存储器可以被
配置到如下实施例中,该实施例使用项目(?#28909;?#23384;储器使用趋势214、趋势相关性标准212、
如这里描述的那样操作的存储器分析工具210和趋势组(有效地也是数据类型组)216)这些
项目以数据118和指令116的形式从可去除介质114和/或另一来源(?#28909;?#32593;络连接)被读取
以形成配置的介质。配置的介质112能够使计算机?#20302;持?#34892;如这里公开的用于按照特定数
据类型或者数据类型组检测和明存储器泄漏的技术过程步骤。图1至图3因此帮助图示了配
置的存储介质实施例和过程实施例以及?#20302;?#21644;过程实施例。具体而言,在图3?#22411;?#31034;和/或
这里以别的方式教导的过程步骤中的任何过程步骤可以用来帮助配置存储介质以形成配
置的介质实施例。

附加示例

以下提供附加?#38468;?#21644;设计考?#24688;?#19982;这里的其它示例一样,可以在一个给定的实施
例中个别地和/或在组合中或者完全没有使用描述的特征。

本领域技术人员将理解,实施?#38468;?#21487;以涉及专属代码(?#28909;?#19987;属API和专属样本程
序),并且因此无需出现在每个实施例中。本领域技术人?#24065;?#23558;理解,在?#33268;巰附?#26102;使用的
程序标识符和一些其它术语是实现方式专属的,并且因此无需涉及每个实施例。然而,虽然
未必地要求它们这里存在,但是提供这些?#38468;冢?#22240;为它们可以通过提供情境来帮助一些读
者和/或可以举例说明这里?#33268;?#30340;计数的许多可能实现方式中的少数实现方式。Microsoft
Visual程序和/或归档的一些现有的、计划的或者潜在的版本方面与这里描述的
实施例中的一些实施例的方面一致或者以别的方式举例说明这些方面(微软公司的商标)。
然而,将理解,Visual归档和/或实现方式选择未必地?#38469;?#36825;样的实施例的范围,
并且类似地,Visual和其它产品和/或它们的归档可以很好地包含
落在这样的实施例的范围以外的特征(微软公司的商标)。也将理解提供以下?#33268;?#37096;分作为
辅助未必是本领域技术人员的读者,因此可以包含/或省略如下?#38468;冢?#27809;有严格地要求这些
?#38468;?#30340;以下记载支持本公开内容。

在一些示例中,一种用于存储器泄漏检测的方式基于由应用120使用的对存储器
堆130的轻量级采样和基于对所得存储器使用数据132的统计分析。如图4中所示,堆的轻量
级采样202(被称为类型直方图402)在生产机器404上由采样代理406周期地收集。采样由数
据处理器模块408核对以得到用于应用进程120及其个别类型124的存储器趋势信息214。这
些趋势214由存储器分析辅助210统计地分析以断定进程120是否泄漏存储器,其中如果是
则标识个别类型124中的哪些类型是泄漏类型410。辅助210也可以对于进程120整体和对于
个别类型124或者类型组216二者在存储器大小236和数据项目计数238方面计算泄漏度量
218,?#28909;?#27844;漏速率224。这样的方式通过统计地确定进程120中的哪些其它类型具有相似存
储器简档(以得到有关类型)来帮助向开发者104提供关于存储器泄漏的情境的信息。在一
些情况下,这一方式也可以通过将数据类型使用趋势相关324到处理负荷128请求趋势以找
到哪些请求与泄漏有关来提供附加情境。在简洁、可视报告中向用户104呈现310这样的信
息218,该报告帮助用户制定用于减少或者消除存储器泄漏问题的动作过程。

这一方式可以视为具有三个部分。一个部分是收集轻量级类型直方图数据。第二
部分是统计分析数据以得到对设?#20204;?#22659;有用的泄漏类型和其它信息。第三部分是向用户呈
现相关结果。以下进一步?#33268;?#27599;个部分。

数据收集

在数据收集阶段中,在规律间隔收集存储器堆130的轻量级采样202并且做出一些
处理以得到类型趋势214。在这一示例中,轻量级采样被称为“类型直方图?#20445;?#22240;为它们包含
每个类型124的基本统计量,?#28909;?#39033;目大小和项目计数。这形成分析的基础。在图12中示出
了类型直方图情境的一个示例。随时间收集和存储许多这样的类型直方图402。每个直方图
具有关于堆130在收集时间208的状态的信息。注意,这一泄漏分析方式没有?#35272;?#20110;具体收
集计数;任何提供原始使用数据132的机制可以用来收集它作为向分析的输入。

处理这一直方图数据以得到类型趋势,例如,关于具体类型的大小/计数在采样时
间?#25991;?#36235;势如何的信息。例如,图12表格中的System.String可能具?#24615;?#37319;样时?#25991;?#30340;趋
势,如图5中所示趋势。在数据收集之后,具有用于在堆(或者其它兴趣存储器112)上具有实
例(项目126)的一些或者所有类型124的类型趋势。

注意,在图5-9中,沿着轴作为标记符而示出的具体数值对于这里呈现的教导并不
重要。在这些图中示出的图形线和其它函数的相对形状可能对于呈现的目的而言颇为相
同,即使使用不同数值标记符。实际上,图10和11包括样式化的图形,这些图形使用短线段
作为轴标记符而不是使用数字。

与用于存储器泄漏分析的趋势214运作的一些技术效果将为本领域技术人员所清
楚。趋势信息一旦它的?#24403;?#29702;解就相对地易于计算,并且它收集起来也相对地轻量级而对
监视的下层应用120有最小影响。为将这一趋势数据串行化到盘或者通过网络108发送它支
付相对低的成本。由于可以捕获采样时间208和进程120的信息124、128,所以可以更易于在
以后分析中连结这一数据与其它数据源。

存储器泄漏分析

在以上概括的方式的这一部分中,工具210分析类型趋势信息以?#39029;?#21738;些类型124
泄漏并且?#19994;?#21521;开发者提供附加情境以辅助调试的有关类型。

关于?#19994;?#27844;漏类型,一些工具210取得类型趋势信息、使用线性回归以标识拟合观
测的采样的函数并且确定函数如何随时间改变(增长指示泄漏)。作为以下示例,图6图示了
使用最小平方计算以拟合System.String的图5的观测趋势214以得到线函数作为拟合240
的简单线性回归。拟合的函数240可以用作趋势214。在负荷和请求类型在采样间隔中近似
地恒定时,估计的线在阈值以上的正斜率(例如在0.18或者10度以上的斜率)可以指示存在
泄漏。非泄漏趋势有可能在采样间隔内略微地为正。但是在许多情况下,比在负荷和请求趋
势上的斜率更大的在使用趋势上的斜率指示?#26723;?#36827;一步调查的存储器泄漏可能性。工具
210也可以计算关于泄漏的一些推断的度量。拟合240的斜率是例如根据在水平轴上的单位
而以每分钟或者每采样的?#32440;?#25968;为单位的估计的泄漏速率224。泄漏速?#39135;?#20197;采样时段的
乘积给定泄漏的估计的大小226。拟合线的Y截距给定用于存储器使用的估计的开始状态。

对于直方图中的所有类型执行这样的分析提供用于那些类型124中的每个类型的
泄漏速率224。泄漏速率可以被排序以标识最多泄漏类型并且向开发者提供用于使哪些类
型优先开始具体调查的基础。可以从调查中过滤掉有接近零泄漏速率和/或负泄漏速率的
类型。这一方式可以显著地缩减兴趣类型124的集合,这可以使调查开发者的工作容易得
多。

本领域技术人员将认识到,最小平方仅为可以应用的一种线性回归。可以对于不
同类型的趋势(例如非线性趋势214)应用其它回归。可以评估线性回归模型的组合以?#19994;?br />用于所分析的类型的?#24049;没?#32773;最优拟合240。也可以用计数或者大小完成这样的分析。根据
所分析的类型,其中之一或者二者可以令人?#34892;?#36259;的。一些变化解?#36879;?#33655;128。一个实施例
可以通过对于每秒的请求数归一化318(例如,将采样值除以在该时段的每秒请求数)和/或
通过在UI图表322上叠加负荷信息并且因此用户104可以看见负荷并且判决表观泄漏是否
为实际的(例如,可以预计有更高负荷的成比例使用大小按步进增加并且排除它作为泄漏)
来解?#36879;?#33655;。

有关类型

在实践中,在给定的情形中的最高泄漏类型中的许多泄漏类型经常是用户的定制
类型使用和引用的?#20302;?#31867;型。例如,知道System.String是最高泄漏类型可能无助于开发者
确定知道泄漏位于何处。一种用于提供关于泄漏的更多情境的方式是与最高泄漏类型124
一起标识泄漏的其它有关类型。这一分组216可能向用户示出原本不会冒泡到泄漏类型的
列表的最高的类型124,因为它们没?#24615;?#19982;最高泄漏类型相同的每实例的速率或者大小泄
漏。

为了实现这一点,一些实施例比较类型趋势并且寻?#20197;?#23427;们之间的相关性。一种
用于这样做的方式是例如使用Pearson-瞬间相关性系数或者Spearman秩系数以?#39029;?#20004;个
趋势如何接近地匹配并且使用相关性程度(或者缺乏相关性程度)作为用于?#19994;?#26377;关类型
124的基础。高(绝对值)相关性系数230指示高关系而低(绝对值)系数指示低或者无关系。
也就是说,在从+1到-1的系数范围中,接近零的值代表低或者无关系,而更接近+1或者-1的
值代表高关系(-1是完全地负相关)。图7图示了如由类型的趋势214A和214B的可视相似性
确认的接近地有关的类型的一个示例。这些趋势之一是最高泄漏类型,而评估第二趋势以
查?#27492;?#26159;否和如何有关。对照而言,图8图示?#23435;?#20851;的两个趋势214C和214D的示例。作为更
多另一示例,图9图示了用于作为有关类型的两个数据类型124的趋势214C和214E,即使它
们的增长速率不同。

根据这里的教导的一些示例使用这样的分析以包括用于与最高泄漏类型有关(相
关)的类型的有关类型信息。因此,在用户104关注最高泄漏类型(假如System.String)时,
他?#19988;?#21487;以看见以相?#21697;?#24335;泄漏的其它有关类型(假如定制的用户定义类型,如Employee
类型)。这一相关性可以由开发者用来拼接泄漏可能在代码122?#24615;?#20110;的地方。

一个变化将有关类型聚类在一起并且示出最高泄漏聚类(也就是组216)而不是个
别类型。这允许开发者关注整个泄漏组而不是个别类型,这可以提供更有用情境。

有关请求

对于web应用120,也有时?#34892;?#36259;知道泄漏与哪个或者哪些请求更接近地关联。负
荷128请求412可以例如是HTTP请求、HTTPS请求或者其它web应用或者web服务器请求。这不
仅向调查开发者给出更多情?#24120;?#23427;也向他们给出用于理解被任何改变所影响的用户场景的
良好起点。

一个变化收集关于在处理类型直方图之时处理的请求的信息。关于每个请求412
的信息由数据处理器408变换成累积求和级数,?#32654;?#35745;求和级数是给定的请求序列的部分
求和的序列。因此,如果{x,y,z}是原有请求412序列,则累计求和级数是{x,x+y,x+y+z}。累
计求和级数是递增级数。分析辅助210然后执行相似相关性分析(如以上对于趋势214描述
的那样)以?#39029;?#35831;求412中的哪些请求最接近地匹配泄漏趋势。这里的高相关性将指示泄漏
与所?#33268;?#30340;请求关联。在泄漏趋势与请求数目之间的?#35782;?#22320;高的相关性将指示泄漏在共享
部件中,这也是有用的调试信息。

结果呈现

一些实施例以简洁的优先化的形式呈现分析结果作为信息218以首先作用于最有
影响的泄漏。这一显示可以是以web报告或者在丰富客户端(?#28909;鏘DE 136)中的报告的形
式。图10图示了用户界面220的一个示例,该用户界面具有?#35828;?#26639;1002、用于总体存储器使
用的图形322和用户易于访?#39318;?#39640;泄漏类型的总列表(包括用户类型124和?#20302;?#31867;型124二
者)以及最高泄漏用户定义类型的列表。在实际显示的这一样式化的表示中,文本和数字由
点划线代表。例如在一个实际实施例中的泄漏速率将是实际值(例如,每小时83.64吉字
节),并且最高泄漏类型将具有名称222(例如System.Byte[]、Free、System.String或者在
?#33268;?#30340;情形中出现的无论任何名称(实施例不限于?#19978;低?#36719;件或者累计求
和级数库提供的类型124))。可以在数据类型的名称?#21592;?#31034;出每个数据类型的泄漏的数量
226。类型名称的白名单和/或?#20302;?#24211;/汇编/对象模块的列表可以用来在?#20302;?#31867;型与用户定
义的类型之间区分。

图11图示了在扩展的格式1102中示出最高泄漏类型的信息218的图10界面。在一
些实施例中,扩展的格式1102包括或者标识以下各项中的一项或者多项:有关用户类型、有
关?#20302;?#31867;型。一些版本与每个有关类型的名称、估计的泄漏大小和估计的泄漏实例计数一
起示出用于该类型的相关性系数。在一些版本中,扩展的信息的图形322A伴随有如下文本,
该文本?#29575;?#25968;据类型的估计的泄漏大小、估计的泄漏实例计数、以每小时吉?#32440;?#25968;为单位
的泄漏速率和以每小时实例数为单位的泄漏速率。其它版本包括以直方图、散点图(例如有
标记为对象126的平均大小的对数标度的水平轴和标记为大小增加速率的对数标度的竖
轴)、饼形图和其它呈现格式的形式对信息218的图形呈现。一些版本以最大峰值和/或最相
关的趋势的形式将用户首先引向最有用信息。

附加技术结果

本领域技术人员将认识到,这里描述的方式可以仅涉及到轻量级数据收集、串行
化和传送,从而使得与完全存储器转储比较,对计算环境的性能的影响小或者甚至微不足
道。在延长的时间?#25991;?#37319;样也可以具有校正误差和给出更准?#26041;?#26524;这样的结果、有别于往
往离散、因此对在取得它时堆的状态敏感的存储器转储。有帮助的度量、如以每分钟兆?#32440;?br />数和每分钟实例(数据项目)数为单位的泄漏速率以及其它度量在许多情况下可用。这里描
述的方式帮助开发者使哪些类型124优先被调查寻找存储器泄漏。为了附加诊断结果,这里
描述的方式也可以与其它数据源(如传入请求或者垃圾收集连结)。这里描述的一些方式的
结果提供用于来自数据类型(?#28909;?#26377;关泄漏类型、对泄漏类型的聚类(分组))和有关请求的
存储器泄漏的情境。

一些示例的附加?#29575;?br />

一种用于通过辅助对具有处理负荷并且使用存储器的软件程序中的存储器泄漏
的检测来改进计算机的运作的计算过程包括在与一个或者多个步骤相互的各种组合中的
各种步骤。

可以被呈现的步骤是获得包括存储器使用采样的存储器使用数据,这些存储器使
用采样共同地指定多个数据类型。在一些情况下,每个存储器使用采样指定在指定的采样
时间用于数据类型中的至少一个数据类型的至少一个使用统计量的值。

可以被呈现的步骤是通过利用处理器处理存储器使用数据的至少部分,来针对多
个数据类型而计算地标识随时间的相应的存储器使用趋势。

可以被呈现的步骤是计算地搜索在数据类型存储器使用趋势之间的相关性。

可以被呈现的步骤是计算地将数据类型分组成存储器使用趋势相关的组。在一些
情况下,给定的存储器使用趋势相关的组中的所有数据类型具有满足预定趋势相关性标准
的存储器使用趋势。在一些情况下,其趋势没有满足预定趋势相关性标准的数据类型不在
给定的存储器使用趋势相关的组中。

可以被呈现的步骤是显示关于由分组步骤分组的数据类型的存储器使用分析信
息。

在一些情况下,预定趋势相关性标准在并且仅在趋势具有超出预定相关性阈值的
相关性系数时指定趋势相关。

在一些情况下,用于数据类型的使用统计量包括指示数据类型的多少项目被分配
的计数。

在一些情况下,用于数据类型的使用统计量包括指示数据类型的多少项目被取消
分配的计数。

在一些情况下,用于数据类型的使用统计量包括指示多少存储器被指明为被分配
给数据类型的项目的存储器大小。

在一些情况下,用于数据类型的使用统计量包括指示多少被指明为被分配给数据
类型的项目的存储器被取消分配的存储器大小。

在一些情况下,标识相应存储器使用趋势包括使用最小平方来执行简单线性回归
以将使用统计量拟合到线性趋势。

在一些情况下,标识相应存储器使用趋势包括执行分段回归以将使用统计量拟合
到逐段线性趋势。

在一些情况下,标识相应存储器使用趋势包括执行非线性回归以将使用统计量拟
合到非线性趋势。

在一些情况下,计算地搜索在数据类型存储器使用趋势之间的相关性包括确定用
于数据类型存储器使用趋势的Pearson乘积-瞬间相关性系数。

在一些情况下,计算地搜索在数据类型存储器使用趋势之间的相关性包括确定用
于数据类型存储器使用趋势的Spearman秩相关性系数。

在一些情况下,计算地搜索在数据类型存储器使用趋势之间的相关性包括确定用
于数据类型存储器使用趋势的Kendall秩相关性系数。

在一些情况下,计算地搜索在数据类型存储器使用趋势之间的相关性包括确定用
于数据类型存储器使用趋势的距离相关性。

在一些情况下,计算地搜索在数据类型存储器使用趋势之间的相关性包括确定用
于数据类型存储器使用趋势的距离协方差。

在一些情况下,计算地搜索在数据类型存储器使用趋势之间的相关性包括确定用
于数据类型存储器使用趋势的Brownian距离协方差。Brownian距离协方差仅为距离协方差
的一个示例。

在一些情况下,计算地标识相应的存储器使用趋势包括将用于处理负荷的使用统
计量归一化。

在一些情况下,计算地将数据类型分组成存储器使用趋势相关的组包括对具有如
下趋势的两个数据类型分组,这些趋势具?#24615;?#39044;定阈值以上的相关性系数,即使趋势具有
不同增长速率。

在一些情况下,显示关于由分组步骤分组的损类型的存储器使用分析信息包括显
示在向用户被标识为具有最多存储器泄漏的组中的数据类型的数据类型名称。

在一些情况下,显示关于由分组步骤分组的损类型的存储器使用分析信息包括显
示在向用户被标识为具有用户定义的数据类型的最多存储器泄漏的组中的用户定义的数
据类型的数据类型名称。

在一些情况下,显示关于由分组步骤分组的损类型的存储器使用分析信息包括显
示用于特定数据类型的估计的泄漏大小。

在一些情况下,显示关于由分组步骤分组的损类型的存储器使用分析信息包括显
示用于特定数据类型的以每单位时间的存储器大小为单位的的估计的泄漏速率。

在一些情况下,显示关于由分组步骤分组的损类型的存储器使用分析信息包括显
示用于特定数据类型的估计的泄漏项目计数。

在一些情况下,显示关于由分组步骤分组的损类型的存储器使用分析信息包括显
示用于特定数据类型的以每单位时间的项目计数为单位的估计泄漏大小。

一些示例提供一种被配置有数据和指令的计算机可读存储介?#21097;?#36825;些指令在由至
少一个处理器执行时,使得处理器执行用于辅助对具有处理负荷并且使用存储器的软件中
的存储器泄漏的检测的技术过程。

可以被呈现的步骤是获得包括存储器使用采样的存储器使用数据,这些存储器使
用采样共同地指定多个数据类型。在一些情况下,每个存储器使用采样指定在指定的采样
时间用于数据类型中的至少一个数据类型的至少一个使用统计量的值。

可以被呈现的步骤是通过利用处理器处理存储器使用数据的至少部分,来针对多
个数据类型而计算地标识随时间的相应的存储器使用趋势。

可以被呈现的步骤是计算地搜索在数据类型存储器使用趋势之间的相关性。

可以被呈现的步骤是计算地将数据类型分组成存储器使用趋势相关的组,从而使
得给定的存储器使用趋势相关的组中的所有数据类型具有满足预定趋势相关性标准的存
储器使用趋势,预定趋势相关性标准在趋势具有超出预定相关性阈值的相关性系数时指定
趋势相关。

在一些情况下,预定相关性阈值在范围从-1到+1的相关性系数标度上具有至少
0.5的绝对值。

在一些情况下,用于数据类型的使用统计量包括指示数据类型的多少项目被分配
的计数。

在一些情况下,用于数据类型的使用统计量包括指示多少存储器被指明为被分配
给数据类型的项目的存储器大小。

在一些情况下,计算地标识相应存储器使用趋势包括执行至少一个线性回归。

在一些情况下,计算地标识相应存储器使用趋势包括归一化用于处理负荷的使用
统计量。

在一些情况下,计算地搜索在数据类型存储器使用趋势之间的相关性包括以下各
项中的至少一项:确定用于数据类型存储器使用趋势的Pearson乘积-瞬间相关性系数,确
定用于数据类型存储器使用趋势的Spearman秩相关性系数,确定用于数据类型存储器使用
趋势的Kendall秩相关性系数,或者确定用于数据类型存储器使用趋势的距离相关性。

可以被呈现的步骤是显示在向用户被标识为具有最多存储器泄漏的组中的数据
类型的数据类型名称。

可以被呈现的步骤是显示在向用户被标识为具有用户定义的数据类型的最多存
储器泄漏的组中的用户定义的数据类型的数据类型名称。

可以被呈现的步骤是显示用于特定数据类型的估计的泄漏大小。

可以被呈现的步骤是显示用于特定数据类型的以每单位时间的存储器大小为单
位的估计泄漏速率。

可以被呈现的步骤是显示用于特定数据类型的估计的泄漏项目计数。

可以被呈现的步骤是显示用于特定数据类型的以每单位时间的项目计数为单位
的估计的泄漏速率。

一种存储器分析计算机?#20302;常?#21487;以被配置有存储器分析辅助,该存储器分析辅助
用于通过辅助对具有处理负荷并且使用存储器的软件中的存储器泄漏的检测来改进存储
器分析计算机?#20302;?#26412;身在另一计算机?#20302;?#36816;作时的运作。

存储器分析计算机?#20302;?#36890;常地包括逻辑处理器和与逻辑处理器可操作地通信的
存储器。

趋势相关性标准可以驻留在存储器中。

一种存储器分析工具可以驻留在存储器中并且可以具有指令,这些指令由处理器
了执行以针对多个数据类型而标识随时间的相应的存储器使用趋势,搜索在数据类型存储
器使用趋势之间的相关性,以及将数据类型分组成存储器使用趋势相关的组。在一些情况
下,给定的存储器使用趋势相关的组中的所有数据类型具有满足趋势相关性标准的存储器
使用趋势,并且其趋势没有满足趋势相关性标准的数据类型不在给定的存储器使用趋势相
关的组中。

存储器分析计算机?#20302;?#21487;以包括显示器。存储器分析工具可以包括软件,该软件
显示以下项目中的至少两个项目:在向用户被标识为具有最多存储器泄漏的组中的数据类
型的数据类型名称,在被标识为具有用户定义的数据类型的最多存储器泄漏的组中的用户
定义的数据类型的数据类型名称,用于特定数据类型的估计的泄漏大小,用于特定数据类
型的以每单位时间的存储器大小为单位的估计的泄漏速?#21097;?#29992;于特定数据类型的估计的泄
漏项目计数,或者用于特定数据类型的以每单位时间的项目计数为单位的估计的泄漏速
率。存储器分析计算机?#20302;?#21487;以具有显示项目中的至少三个项目的存储器分析工具。存储
器分析计算机?#20302;?#21487;以具有显示项目中的至少四个项目的存储器分析工具。

趋势相关性标准可以包括在范围从-1到+1的相关性系数标度上具有至少0.4的绝
对值的相关性阈值。趋势相关性标准可以包括在范围从-1到+1的相关性系数标度上具有至
少0.45的绝对值的相关性阈值。趋势相关性标准可以包括在范围从-1到+1的相关性系数标
度上具有至少0.5的绝对值的相关性阈值。趋势相关性标准可以包括在从-1到+1的相关性
系数标度上具有至少0.55的绝对值的相关性阈值。趋势相关性标准可以包括在范围从-1到
+1的相关性系数标度上具有至少0.6的绝对值的相关性阈值。

存储器分析工具可以通过计算以下各项中的至少一项(或者在另一示例中的至少
两项)来搜索在数据类型存储器使用趋势之间的相关性:用于数据类型存储器使用趋势的
Pearson乘积-瞬间相关性系数、用于数据类型存储器使用趋势的Spearman秩相关性系数、
用于数据类型存储器使用趋势的Kendall秩相关性系数、用于数据类型存储器使用趋势的
统计地显著相关性系数、用于数据类型存储器使用趋势的距离相关性。

在一些示例中,存储器分析工具包括显示数据类型存储器使用趋势的图形的图形
用户界面和软件。

结论

虽然这里将具体实施例明确地图示和描述为过程、为配置的介质或者为?#20302;常?#20294;
是将认识到,对一个类型的实施例的?#33268;?#20063;广义地延及其它实施例类型。例如,结合图3对
过程的描述也帮助描述配置的介质并且帮助描述?#20302;?#21644;制造品(如结合其它图?#33268;?#30340;?#20302;?br />和制造品)的技术效果和操作。并未遵循来自一个实施例的限制必然地被解读到另一实施
例中。具体而言,过程未必地限于在?#33268;巰低?#25110;者制造品(?#28909;?#37197;置的存储器)之时呈现的
数据结构和布置。

这里对某个特征X的实施例的引用和这里别处对具有某个特征Y的实施例的引用
没有从本公开内容排除具有特征X和特征Y二者的实施例,除非这里明确地?#29575;?#36825;样的排
除。所有可能的否定权利要求限制在也可以明确地去除被声明为一个实施例的部分的任何
特征没有包含在另一实施例中,即使没?#24615;?#36825;里的任何示例中给出该具体排除这一意义上
在本公开内容的范围内。术语“实施例”这里仅用作与“如这里以与适用法律一致的方式应
用的教导的过程、?#20302;场?#21046;造品、配置的计算机可读介质和/或其它示例”的更方便形式。因
而,一个给定的“实施例”可以包括这里公开的特征的任何组合,只要该实施例与至少一个
权利要求一致。

并?#20197;?#21508;图中示出的每个项目需要存在于每个实施例中。反言之,一个实施例可
以包含没?#24615;?#21508;图中明确地示出的项目。虽然这里在文本和附图中用具体示例举例说明一
些可能性,但是实施例可以脱离这些示例。例如,示例的具体技术效果或者技术特征可以被
省略、重新命名、不同地分组、重复、在硬件和/或软件中不同地实例化或者是在示例中的两
个或者更多示例中出现的效果或者特征的混合。在一个位置示出的功能也可以在一些实施
例?#24615;?#19981;同位置被提供;本领域技术人?#27604;?#35782;到,可以在给定的实现方式中以各种方式定
义功能模块而未必地从被视为整体的交互模块的汇集中省略希望的技术效果。

已经用标号对各图进行了全篇引用。在与给定的标号关联的措词中、在各图中或
者在文本中的任何表观不一致应当被理解为简单地拓宽由该标号引用的内容的范围。给定
的标号的不同实例可以涉及不同实施例,即使使用相同标号。

如这里所用,?#28909;紜?#19968;个/一种”和“该”之类的术语包含一个或者多个指示的项目
或者步骤。具体而言,在权利要求中,对项目的引用一般地意味着至少一个这样的项目存
在,而对步骤的引用意味着执行步骤的至少一个实例。

标题仅为了方便;可以在其标题指示给定的主题的章节以外?#19994;?#20851;于该主题的信
息。

如提交的所有权利要求和说明书摘要是说明书的部分。

尽管已经在附图中示出并且以上描述了示例性实施例,但是本领域普通技术人员
将清楚,可以做出许多修改而没?#22411;?#31163;在权利要求中阐述的原理和概念,并且这样的修改
无需涵盖整个抽象概念。虽然用结?#22266;?#24449;和/或过程动作特有的言语描述了主题内容,但是
将理解,在所附权利要求中定义的主题内容未必地限于以上描述的具体技术特征或者动
作。没有必要让在给定的定义或者示例中标识的每个装?#27809;?#32773;方面或者技术效果在每个实
施例中存在或者被使用。实际上,公开描述的具体特征以及动作和效果作为用于在实施权
利要求时考虑的示例。

没有包容整个抽象想法、但是落入权利要求的含义和等效范围内的所有改变将在
法?#31245;?#35768;的完全程度上被涵盖在它们的范围内。

关于本文
本文标题:通过使用趋势相关性的存储器泄漏分析.pdf
链接地址:http://www.pqiex.tw/p-6091811.html
关于我们 - 网站声明 - 网?#38236;?#22270; - 资源地图 - 友情链接 - 网站客服 - 联系我们

[email protected] 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
平码五不中公式规律 河北十一选五--一定牛 双色球基本走势图彩 双色球进5式分布图 快乐8开奖结果 吉林十一选五遗漏一定牛 内蒙古11选5万能5码 江苏11选5在线开奖 晓游棋牌官网大厅下载 福利彩票开奖结果 pc蛋蛋预测99预测加拿大