【技术实现步骤摘要】
用于多线程环境下动态调整全局堆分配的方法和系统
本专利技术涉及多线程环境下的全局堆分配技术。更具体地,本专利技术尤其涉及通过监测全局堆分配方法的冲突参数来动态调整全局堆分配的方法和系统。
技术介绍
目前,随着计算机多核技术的发展,多线程(multi-thread)程序得到了越来越广泛的应用。多线程环境下存在两大问题,其一是资源共享,也就是多个线程共享同一实体物理内存。其二是资源同步,也就是多线程环境要求同一实体物理内存在同一时间仅由一个线程访问。由此可见,资源共享与资源同步是彼此之间存在矛盾的要求。在保证资源共享的前提下,当多个线程同时请求对全局堆(Heap)的分配时,就会产生“锁竞争”,也就是说后请求的线程必须等待先请求的线程共享内存分配完毕后才能“解锁”,从而进行内存分配。如果同时请求内存分配的线程数量庞大,则会导致程序运行速度下降,造成“死机”甚至“系统崩溃”等现象。图2A示出了这种情形的一个示例。如图2A所示,线程(Thread)1-N需要共享全局内存堆(GlobalMemoryHeap),而根据资源同步的要求,同一时间只能对一个线程进行全局内存堆的分配, ...
【技术保护点】
一种用于在多线程环境下动态调整全局堆分配的方法,包括:识别应用程序中的全局堆分配方法;判断所述全局堆分配方法是否为多线程冲突热点;响应于判断结果为是,利用本地栈分配所述全局堆分配方法所请求的内存空间。
【技术特征摘要】
1.一种用于在多线程环境下动态调整全局堆分配的方法,包括:识别应用程序中的全局堆分配方法;判断所述全局堆分配方法是否为多线程冲突热点;响应于判断结果为是,利用本地栈提供所述全局堆分配方法所请求的内存空间,该全局堆为由多个线程所共享的内存空间,并且该本地栈为由多个线程中的各个线程所独享的内存空间,其中判断所述全局堆分配方法是否为多线程冲突热点包括:通过实时监测所述全局堆分配方法的多线程冲突参数来判断所述全局堆分配方法是否为多线程冲突热点,所述多线程冲突参数包括下列参数中的一个或多个:所述全局堆分配方法在单位时间内的调用次数;所述全局堆分配方法所请求分配的全局内存空间;所述全局堆分配方法在单位时间内的锁冲突次数。2.如权利要求1所述的方法,还包括:响应于判断结果为否,利用所述全局堆分配所述全局堆分配方法所请求的内存空间。3.如权利要求1或2所述的方法,其中响应于判断结果为是,利用本地栈分配所述全局堆分配方法所请求的内存空间包括:响应于判断结果为是,判断所述全局堆分配方法所请求的内存空间是否大于本地栈所允许分配的上限空间;响应于所述全局堆分配方法所请求的内存空间大于本地栈所允许分配的上限空间,利用所述全局堆提供所述全局堆分配方法所请求的内存空间;以及响应于所述全局堆分配方法所请求的内存空间不大于本地栈所允许分配的上限空间,利用所述本地栈提供所述全局堆分配方法所请求的内存空间。4.如权利要求1所述的方法,其中所识别的应用程序中的全局堆分配方法为包含本地栈分配和全局堆分配的条件分支语句,所述条件为所述全局堆分配方法是否为多线程冲突热点。5.如权利要求4所述的方法,其中条件分支语句是通过代码注入对应用程序中的原始全局堆分配方法进行修改而得到的。6.如权利要求3所述的方法,其中本地栈所允许分配的上限空间值为预设的不大于本地栈最大空间的值。7...
【专利技术属性】
技术研发人员:韩瑞波,罗志达,戴晓君,刘伟,
申请(专利权)人:国际商业机器公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。