[发明专利]虚拟化环境中垃圾回收的方法和系统有效
申请号: | 201010161755.1 | 申请日: | 2010-04-29 |
公开(公告)号: | CN102236603A | 公开(公告)日: | 2011-11-09 |
发明(设计)人: | 李立;田瑞雄;刘亮;王浩;王庆波;陈滢 | 申请(专利权)人: | 国际商业机器公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02;G06F9/455 |
代理公司: | 中国国际贸易促进委员会专利商标事务所 11038 | 代理人: | 李镇江 |
地址: | 美国*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 虚拟 环境 垃圾 回收 方法 系统 | ||
技术领域
本发明涉及垃圾回收,特别涉及虚拟化环境中垃圾回收的方法和系统。
背景技术
目前虚拟化技术得到了广泛的应用。虚拟化技术提供了一种能够将多个虚拟机(VM)容纳在一个大的服务器上的方式,降低了用户的总成本并且改善了应用的可靠性和灵活性,从而可以减少用户对于各个工作负荷的尖峰(spike)过度提供计算资源的可能性。而且,虚拟化技术有助于隔离重要的应用,使得运行在不同虚拟机上的不同应用不会共享操作系统,于是由应用引起的致命的故障并不会影响任何其他虚拟机中的应用。虚拟化技术是“云计算(Cloud Computing)”技术中的一项重要且基础的技术。在世界范围内,越来越多的个人和组织都在利用虚拟化解决方案来提供“云环境”服务,以获得提升计算机硬件使用效率、灵活性并降低硬件成本的好处。
垃圾回收(Garbage Collection)是由程序执行环境(例如java,C#以及大多数脚本语言)自动回收不再使用内存的内存管理机制,垃圾回收器是虚拟机的重要组成部分,以JVM(Java虚拟机)为例,在JVM所管理的空闲内存空间过少或者连续空闲内存空间过小,JVM不能从堆(Heap)上为对象分配内存空间时,JVM会发出内存分配错误,由此激活垃圾回收器进行垃圾回收。垃圾回收器进行垃圾回收时,它检查堆中不再被应用程序使用的对象并执行必要的操作来回收它们占用的内存。垃圾回收策略通常包括标记拷贝方法(Mark-Copy)和标记清除方法(Mark-Sweep)。在标记拷贝方法中,Java虚拟机将所管理的内存空间一分为二,当内存空间使用到一半时,垃圾回收会将所有存活的对象拷贝至另一半未使用的内存空间,并在另一半空间上继续分配内存,而前一半空间转为空闲空间作为下一次垃圾回收的目标空间。然而标记拷贝方法要求必须将虚拟机所管理的内存空间预留一半,即内存使用率始终不超过50%。在标记清除方法中,在运行的过程中分为三个阶段:标记阶段、清除阶段和压缩阶段。标记阶段的任务是从对象根节点开始遍历其所有指向的对象,在每个它所发现的存活对象上都加上标记,直至遍历完毕,没有被标记的对象就是垃圾;在清除阶段回收所有的垃圾;最后在压缩阶段将离散凌乱分布的对象放到内存中的连续地址。虽然不是在每次垃圾回收中都启动压缩阶段,但是一次压缩阶段所耗时间经常是若干秒钟,而此期间应用执行是停止的。由于服务器端的应用广泛运行在虚拟机上,云计算平台将作为服务器端需要处理大量的应用请求并且需要保证服务质量,服务器端应用的服务质量要求处理请求的响应时间在毫秒量级,因此虚拟机垃圾回收中压缩阶段所引入的响应延时是不可接受的,应该尽量避免。
由于标记清除法所导致的响应延时增加不可接受,而传统标记拷贝法导致内存利用率过低(不超过50%),而虚拟化平台中内存是一种关键的紧缺资源,因此,需要一种在虚拟化环境中提高内存使用效率的垃圾回收方法,以满足服务器端长时运行的程序对服务请求响应时间的要求。
发明内容
基于上述问题,本发明提供一种在虚拟化环境中进行垃圾回收的方法和系统。
根据本发明的第一方面,提供一种在虚拟化环境中进行垃圾回收的方法,所述虚拟化环境包括虚拟机管理器、至少一个客户机操作系统以及运行在客户机操作系统上的至少一个应用程序,其中所述应用程序利用垃圾回收机制进行内存管理,所述方法包括以下步骤:响应于应用程序的运行环境启动垃圾回收,请求客户机操作系统为所述应用程序分配内存空间;响应于客户机操作系统为所述应用程序分配内存空间,在所述应用程序的原有内存空间中标记存活的对象;将所标记的存活的对象复制到所分配的内存空间;以及将所述应用程序的原有内存空间释放给客户机操作系统。
根据本发明的第二方面,提供一种在虚拟化环境中进行垃圾回收的系统,所述虚拟化环境包括虚拟机管理器、至少一个客户机操作系统以及运行在客户机操作系统上的至少一个应用程序,其中所述应用程序利用垃圾回收机制进行内存管理,所述系统包括:内存空间请求模块,被配置为响应于应用程序的运行环境启动垃圾回收,请求客户机操作系统为所述应用程序分配内存空间;标记模块,被配置为响应于客户机操作系统为所述应用程序分配内存空间,在所述应用程序的原有内存空间中标记存活的对象;复制模块,被配置为将所标记的存活的对象复制到所分配的内存空间;以及内存空间释放模块,被配置为将所述应用程序的原有内存空间释放给客户机操作系统。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010161755.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:ACK/NACK信息的传输方法和设备
- 下一篇:一种多功能收割机