当前位置: 首页 > 专利查询>微软公司专利>正文

本机堆分配的运行时类型标识制造技术

技术编号:8562840 阅读:157 留言:0更新日期:2013-04-11 04:27
本发明专利技术涉及本机堆分配的运行时类型标识。在编译期间,创建了将本机语言程序的存储器分配指令的相对虚拟地址映射到实例的用户类型的表。在程序的执行期间,被插入到进程中的模块截取对存储器分配函数的调用并记录调用存储器分配函数的指令的虚拟地址和所创建的实例的虚拟地址。当请求进程堆的快照时,对应编译时指令的用户类型被分配给所创建的实例。用户类型和堆信息可被用于计算存储器分配的大小并聚集用户类型实例的计数和大小。使用静态调试信息,可计算和显示引用图,该引用图显示活实例中的对象的嵌套。

【技术实现步骤摘要】

本专利技术涉及存储器管理技术,更具体地,涉及本机堆分配的运行时类型标识
技术介绍
存储器管理包括根据请求将存储器的各部分分配给各程序,以及当程序不再需要所分配的存储器时释放该存储器以供重新使用。对存储器的低效或不正确的使用会降低程序性能或导致程序崩溃。类似的,无法释放已分配的存储器或不正确地释放存储器会降低程序性能或导致程序崩溃。术语“垃圾回收”常被用来表示一种自动存储器管理形式,其中垃圾回收器重新声明不再是使用中的存储器。垃圾回收是一种被频繁用于虚拟机环境中的技术。与之相比,手动存储器管理依赖于在程序中使用用于请求操作系统分配存储器和取消分配未被使用的存储器的指令。普遍使用的用于手动地管理存储器的语言包括本机语言,诸如C和C++。手动存储器管理会将几个常见类的错误引入程序中。例如,如果当程序使用完所分配的存储器部分时其没有被释放,则会发生存储器泄露。存储器泄露可以是相对无害的(例如,在短时运行的程序中,其中程序结束时操作系统取消分配程序资源),或者如果存储器泄露用尽了可用存储器则会导致程序崩溃。即使存储器泄露没有用尽可用存储器并且没有导致程序崩溃,程序性能会被降低,因为例如缺少本文档来自技高网...

【技术保护点】
一种系统,包括:计算设备的至少一个处理器;所述计算设备的存储器;以及加载到所述存储器中的至少一个模块,所述模块使所述至少一个处理器:响应于接收对堆快照的请求,通过以下步骤提供本机语言程序的存储器分配统计:接收将所述本机语言程序的二进制文件中的指令的相对虚拟地址映射到用户类型的信息,所述指令在被执行时请求存储器分配;将进程中执行的指令的虚拟存储器地址映射到所述指令所请求的存储器分配的实例的地址;将所述指令的虚拟存储器地址匹配于所述指令的对应的相对虚拟地址;将被映射到对应的相对虚拟地址的用户类型分配给所述指令的虚拟存储器地址;以及聚集用户类型实例计数和大小。

【技术特征摘要】
2011.10.10 US 13/269,6261.一种系统,包括 计算设备的至少一个处理器; 所述计算设备的存储器;以及 加载到所述存储器中的至少一个模块,所述模块使所述至少一个处理器 响应于接收对堆快照的请求,通过以下步骤提供本机语言程序的存储器分配统计接收将所述本机语言程序的二进制文件中的指令的相对虚拟地址映射到用户类型的信息,所述指令在被执行时请求存储器分配; 将进程中执行的指令的虚拟存储器地址映射到所述指令所请求的存储器分配的实例的地址; 将所述指令的虚拟存储器地址匹配于所述指令的对应的相对虚拟地址; 将被映射到对应的相对虚拟地址的用户类型分配给所述指令的虚拟存储器地址;以及 聚集用户类型实例计数和大小。2.如权利要求1所述的系统,其特征在于,还包括 加载到所述存储器中的至少一个模块,所述模块使所述至少一个处理器 通过以下步骤显示引用图 扫描所述进程的进程堆以查找指针大小的字段的实例; 移除非指针的指针大小的字段;以及 显示所述引用图中的存储器分配实例之间的关系。3.如权利要求1所述的系统,其特征在于,还包括 加载到所述存储器中的至少一个模块,所述模块使所述至少一个处理器 在编译期间将所述本机语言程序的二进制文件中的指令的相对虚拟地址映射到所述用户类型。4.如权利要求2所述的系统,其特征在于,在编译期间生成的符号调试信息提供实例的布局,其中所述布局被用于移除被记录的指针大小的、但不是指针的字段。5.如权利要求2所述的系统,其特征在于,用户类型和进程堆信息被用于计算存储器分配的大小并聚集用户类型实例计数和大小。6.一种方法,包括 将本机语言程序的指令的相对虚拟地址映射到用户类型,所述指令调用存储器分配函数; 将...

【专利技术属性】
技术研发人员:C·施米希A·R·鲁滨逊
申请(专利权)人:微软公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1