[发明专利]本机堆分配的运行时类型标识有效
| 申请号: | 201210380865.6 | 申请日: | 2012-10-09 |
| 公开(公告)号: | CN103034484A | 公开(公告)日: | 2013-04-10 |
| 发明(设计)人: | C·施米希;A·R·鲁滨逊 | 申请(专利权)人: | 微软公司 |
| 主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F12/02;G06F11/14 |
| 代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 蔡悦 |
| 地址: | 美国华*** | 国省代码: | 美国;US |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 分配 运行 类型 标识 | ||
技术领域
本发明涉及存储器管理技术,更具体地,涉及本机堆分配的运行时类型标识。
背景技术
存储器管理包括根据请求将存储器的各部分分配给各程序,以及当程序不再需要所分配的存储器时释放该存储器以供重新使用。对存储器的低效或不正确的使用会降低程序性能或导致程序崩溃。类似的,无法释放已分配的存储器或不正确地释放存储器会降低程序性能或导致程序崩溃。
术语“垃圾回收”常被用来表示一种自动存储器管理形式,其中垃圾回收器重新声明不再是使用中的存储器。垃圾回收是一种被频繁用于虚拟机环境中的技术。与之相比,手动存储器管理依赖于在程序中使用用于请求操作系统分配存储器和取消分配未被使用的存储器的指令。普遍使用的用于手动地管理存储器的语言包括本机语言,诸如C和C++。
手动存储器管理会将几个常见类的错误引入程序中。例如,如果当程序使用完所分配的存储器部分时其没有被释放,则会发生存储器泄露。存储器泄露可以是相对无害的(例如,在短时运行的程序中,其中程序结束时操作系统取消分配程序资源),或者如果存储器泄露用尽了可用存储器则会导致程序崩溃。即使存储器泄露没有用尽可用存储器并且没有导致程序崩溃,程序性能会被降低,因为例如缺少足够的可用存储器使数据被强制交换出到磁盘。当分配的空间被释放不止一次时或者如果释放了指向未分配存储器的指针,会发生另一种类型的存储器管理错误。这类错误会损坏数据结构或者会不正确地释放后来已由另一程序构造使用的部分存储器。如果在存储器被释放后使用了指向被释放的存储器的指针,则接着会发生无法预料的结果。当程序中的指令分配过多存储器使得没有剩余足够的存储器以供程序高效运行时,会发生存储器过度使用。
发明内容
可请求执行中的本机程序的快照并且可提供对快照请求时所分配的用户类型的存储器分配统计。通过使用静态调试信息和动态运行时分配信息,活(live)存储器堆分配可使用用户类型信息来增强。用户类型和堆信息可被用于计算存储器分配的大小并聚集用户类型实例的计数和大小。使用静态调试信息,可计算和显示引用图,该引用图显示活实例中的对象的嵌套。可提供源文件的名称以及调用存储器分配函数的指令的行号。
提供发明内容述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
附图说明
在附图中:
图1a示出了根据此处所公开的主题的各方面的捕捉相对虚拟地址(RVA)至类型信息的系统100的示例;
图1b示出了根据此处所公开的主题的各方面的将RVA映射成类型的表110的示例;
图1c示出了根据此处所公开的主题的各方面的捕捉运行时存储器分配信息的系统101的示例;
图1d示出了根据此处所公开的主题的各方面的将分配的实例的地址映射成调用存储器分配函数的指令的虚拟地址的表134的示例;
图1e示出了根据此处所公开的主题的各方面的潜在的实例参考信息的表140的示例,其中潜在的实例参考中的一些已被标识为非指针;
图1f示出了根据此处所公开的主题的各方面的包括类型信息的潜在的实例参考信息的表176的示例;
图2a示出了根据此处所公开的主题的各方面的计算目标进程的存储器分配统计的的方法200的示例;
图2b示出了根据此处所公开的主题的各方面的目标进程的经计算出的存储器分配统计的的显示230的示例;
图3是根据本文所公开主题的各方面的计算环境的示例的框图;以及
图4是根据此处所公开的主题的各方面的集成开发环境的示例的框图。
具体实施方式
概览
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软公司,未经微软公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210380865.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种可集水的矿泉水瓶
- 下一篇:自行车用车灯





