一种云平台内存的优化方法和优化系统与流程

文档序号:11519437阅读:178来源:国知局
一种云平台内存的优化方法和优化系统与流程

本发明涉及电数据处理领域,尤其涉及一种基于交通出行数据的户外广告投放方法和投放系统。



背景技术:

应用程序启动时运行在前台,进行初始化会占用大量内存,进入稳定运行期后转到后台运行,此时不需要占用大量内存,而空闲的内存依然被应用程序占用,虚拟机经过很长时间处理才会被回收这些内存。因此,在内存资源不足的情况下,需要将空闲的内存资源快速回收。

在进行内存资源快速回收时,云平台对所有运行的应用程序进行检测,若检测出所有运行的应用程序占用的内存资源值大于第一阈值,则对系统中运行的各个应用程序分别进行检测,若检测到存在某一个应用程序所占用的内存资源值大于第二阈值时,终止该应用程序的运行,回收该应用程序所占用的内存。

在云平台内存不足时才会触发内存资源回收,导致云平台一直处于内存资源紧张状态,降低了云平台的处理能力。



技术实现要素:

有鉴于此,本发明提供一种云平台内存的优化方法和优化系统,以解决现有技术容易造成云平台内存资源紧张的问题。

具体地,本发明是通过如下技术方案实现的:

本发明提供一种云平台内存的优化方法,所述优化方法包括:

接收携带有程序标识和内存释放函数的内存优化代码,所述程序标识用于标识需要释放空闲内存的应用程序,所述空闲内存是应用程序在前台运行时占用且在后台运行时不需占用的内存,所述内存释放函数用于释放空闲内存;

通过所述内存优化代码检测所述应用程序是否从前台切换到后台;

若检测到从前台切换到后台运行,则通过应用程序调用所述内存释放函数对内存进行优化。

本发明还提供了一种云平台内存的优化系统,所述优化系统,包括:

交通出行数据获取单元,用于根据预设的筛选条件获取对应的交通出行数据;

户外广告投放单元,用于根据所述交通出行数据进行户外广告投放。

本发明实施例,通过接收携带有程序标识和内存释放函数的内存优化代码,该程序标识用于标识需要释放空闲内存的应用程序,该空闲内存是应用程序在前台运行时占用且在后台运行时不需占用的内存;通过内存优化代码检测应用程序是否从前台切换到后台运行;若通过内存优化代码检测出应用程序从前台切换到后台运行,则通过应用程序调用内存释放函数,该内存释放函数用于释放空闲内存,可以直接调用包含有内存释放函数的内存优化代码,对应用程序的空闲内存进行释放,解决了在云平台内存不足时才会触发内存资源回收,导致云平台一直处于内存资源紧张状态的问题,达到了提高云平台的处理能力的效果。

附图说明

图1是本发明一示例性实施例示出的一种云平台内存的优化方法的流程图;

图2是本发明一示例性实施例示出的一种云平台内存的优化系统的结构图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

如图1所示为本发明一示例性实施例示出的一种云平台内存的优化方法的流程图,所述优化方法包括:

步骤s101,接收携带有程序标识和内存释放函数的内存优化代码,所述程序标识用于标识需要释放空闲内存的应用程序,所述空闲内存是应用程序在前台运行时占用且在后台运行时不需占用的内存,所述内存释放函数用于释放空闲内存。

在本发明实施例中,内存释放函数用于确定应用程序占用的空闲内存,并可释放该空闲内存的空间。

步骤s102,通过所述内存优化代码检测所述应用程序是否从前台切换到后台。

在本发明实施例中,应用程序启动时运行在云平台的前台,进行初始化后会占用大量内存,进入稳定运行期后转到后台运行,此时不需要占用大量内存,而空闲内存依然被应用程序占用,此时,可以通过内存优化代码来释放空闲内存。

在使用内存优化代码释放应用程序的空闲内存前,云平台需要检测应用程序是否从前台切换到后台运行,从而确定应用程序是否存在空闲内存。

步骤s103,若检测到从前台切换到后台运行,则通过应用程序调用所述内存释放函数对内存进行优化。

综上所述,本公开提供的内存优化方法,通过接收携带有程序标识和内存释放函数的内存优化代码,该程序标识用于标识需要释放空闲内存的应用程序,该空闲内存是应用程序在前台运行时占用且在后台运行时不需占用的内存;通过内存优化代码检测应用程序是否从前台切换到后台运行;若通过内存优化代码检测出应用程序从前台切换到后台运行,则通过应用程序调用内存释放函数,该内存释放函数用于释放空闲内存,可以直接调用包含有内存释放函数的内存优化代码,对应用程序的空闲内存进行释放,解决了在云平台内存不足时才会触发内存资源回收,导致云平台一直处于内存资源紧张状态的问题,达到了提高云平台的处理能力的效果。

作为本发明一个可选实施例,在所述接收携带有程序标识和内存释放函数的内存优化代码的步骤之前,所述优化方法还包括:

若内存释放函数是处于禁止编辑状态的私有函数,则获取应用程序调用的公有函数的绝对地址,其中,该公有函数具有调用内存释放函数的权限;对公有函数的绝对地址进行显示,该公有函数的绝对地址用于指示计算内存释放函数的绝对地址且将内存释放函数的绝对地址添加到内存优化代码中,该内存释放函数的绝对地址等于公有函数的绝对地址加上公有函数和内存释放函数的相对地址,该公有函数和内存释放函数的相对地址由预设的符号表提供。

内存释放函数在虚拟机源代码中为私有函数,是具有确定应用程序占用的空闲内存并释放该空闲内存的功能的函数,该空闲内存是应用程序在前台运行时占用且在后台运行时不需占用的内存。公有函数是具有调用内存释放函数的权限的函数,绝对地址是函数被加载到应用程序后系统为该函数分配的内存地址。

应用程序在虚拟机上运行时,由虚拟机调用内存释放函数对应用程序所占用的空闲内存进行释放,由于虚拟机需要经过很长时间的处理才能回收内存,因此,云平台可以直接调用虚拟机中的内存释放函数来释放空闲内存。若内存释放函数是处于禁止编辑状态的私有函数,即,内存释放函数是不可编辑的源代码,此时,为了能够调用该内存释放函数,云平台需要获取应用程序运行时该内存释放函数的绝对地址。

由于公有函数与内存释放函数的相对地址是固定的,因此,可以通过获取公有函数的绝对地址来得到内存释放函数的绝对地址。因此,云平台需要获取公有函数的绝对地址和公有函数与内存释放函数的相对地址。

其中,获取应用程序调用的公有函数的绝对地址,包括:

(1)、接收携带有程序标识和公有函数的函数标识的地址读取指令;

(2)、在动态链接库中,查找应用程序调用的公有函数的绝对地址。

当公有函数被应用程序调用时,系统会为该公有函数分配内存地址,云平台将该内存地址确定为该公有函数的绝对地址存储在动态链接库中。当需要获取该公有函数的绝对地址时,云平台可以直接从动态链接库中读取该绝对地址。

由于公有函数被不同的应用程序调用时,系统会为该公有函数分配不同的内存地址,因此,在获取某一个应用程序调用的公有函数时,还需要获取该应用程序的程序标识。即,云平台接收到的地址读取指令中需要携带有程序标识和公有函数的函数标识,云平台根据程序标识和函数标识在动态链接库中查找该公有函数的绝对地址,并对该绝对地址进行显示。

需要说明的是,在将函数标识添加到地址获取指令之前,用户可以通过查看虚拟机源代码找到释放虚拟机占用的空闲内存的调用函数,再通过查看虚拟机的头文件确定出该调用函数中的具有调用内存释放函数的权限的公有函数,将该公有函数的函数标识添加到地址获取指令中。

在获取公有函数与私有函数的相对地址时,由于公有函数和内存释放函数的相对地址由预设的符号表提供,因此,用户可以通过查看该符号表,读取需要该公有函数与私有函数的相对地址。其中,该预设的符号表是由symbol库经过objdump得到的。

在确定了公有函数的绝对地址和公有函数与内存释放函数的相对地址后,该内存释放函数的绝对地址可以被确定为公有函数的绝对地址加上公有函数和内存释放函数的相对地址。因此,在用户获取到云平台显示的公有函数的绝对地址,以及,从符号表中读取到公有函数与私有函数的相对地址后,用户可以将公有函数的绝对地址加上相对地址,得到私有函数的绝对地址。

本发明实施例,通过接收携带有程序标识和内存释放函数的内存优化代码,该程序标识用于标识需要释放空闲内存的应用程序,该空闲内存是应用程序在前台运行时占用且在后台运行时不需占用的内存;通过内存优化代码检测应用程序是否从前台切换到后台运行;若通过内存优化代码检测出应用程序从前台切换到后台运行,则通过应用程序调用内存释放函数,该内存释放函数用于释放空闲内存,可以直接调用包含有内存释放函数的内存优化代码,对应用程序的空闲内存进行释放,解决了在云平台内存不足时才会触发内存资源回收,导致云平台一直处于内存资源紧张状态的问题,达到了提高云平台的处理能力的效果。

如图2所示为本发明一示例性实施例示出的一种云平台内存的优化系统的结构图,所述优化系统,包括:

接收单元201,用于接收携带有程序标识和内存释放函数的内存优化代码,所述程序标识用于标识需要释放空闲内存的应用程序,所述空闲内存是应用程序在前台运行时占用且在后台运行时不需占用的内存,所述内存释放函数用于释放空闲内存。

在本发明实施例中,内存释放函数用于确定应用程序占用的空闲内存,并可释放该空闲内存的空间。

检测单元202,用于通过所述内存优化代码检测所述应用程序是否从前台切换到后台。

在本发明实施例中,应用程序启动时运行在云平台的前台,进行初始化后会占用大量内存,进入稳定运行期后转到后台运行,此时不需要占用大量内存,而空闲内存依然被应用程序占用,此时,可以通过内存优化代码来释放空闲内存。

在使用内存优化代码释放应用程序的空闲内存前,云平台需要检测应用程序是否从前台切换到后台运行,从而确定应用程序是否存在空闲内存。

优化单元203,用于若检测到从前台切换到后台运行,则通过应用程序调用所述内存释放函数对内存进行优化。

综上所述,本公开提供的内存优化方法,通过接收携带有程序标识和内存释放函数的内存优化代码,该程序标识用于标识需要释放空闲内存的应用程序,该空闲内存是应用程序在前台运行时占用且在后台运行时不需占用的内存;通过内存优化代码检测应用程序是否从前台切换到后台运行;若通过内存优化代码检测出应用程序从前台切换到后台运行,则通过应用程序调用内存释放函数,该内存释放函数用于释放空闲内存,可以直接调用包含有内存释放函数的内存优化代码,对应用程序的空闲内存进行释放,解决了在云平台内存不足时才会触发内存资源回收,导致云平台一直处于内存资源紧张状态的问题,达到了提高云平台的处理能力的效果。

作为本发明的一个可选实施例,所述优化系统还包括:

绝对地址获取单元,用于若内存释放函数是处于禁止编辑状态的私有函数,则获取应用程序调用的公有函数的绝对地址,其中,该公有函数具有调用内存释放函数的权限;对公有函数的绝对地址进行显示,该公有函数的绝对地址用于指示计算内存释放函数的绝对地址且将内存释放函数的绝对地址添加到内存优化代码中,该内存释放函数的绝对地址等于公有函数的绝对地址加上公有函数和内存释放函数的相对地址,该公有函数和内存释放函数的相对地址由预设的符号表提供。

内存释放函数在虚拟机源代码中为私有函数,是具有确定应用程序占用的空闲内存并释放该空闲内存的功能的函数,该空闲内存是应用程序在前台运行时占用且在后台运行时不需占用的内存。公有函数是具有调用内存释放函数的权限的函数,绝对地址是函数被加载到应用程序后系统为该函数分配的内存地址。

应用程序在虚拟机上运行时,由虚拟机调用内存释放函数对应用程序所占用的空闲内存进行释放,由于虚拟机需要经过很长时间的处理才能回收内存,因此,云平台可以直接调用虚拟机中的内存释放函数来释放空闲内存。若内存释放函数是处于禁止编辑状态的私有函数,即,内存释放函数是不可编辑的源代码,此时,为了能够调用该内存释放函数,云平台需要获取应用程序运行时该内存释放函数的绝对地址。

由于公有函数与内存释放函数的相对地址是固定的,因此,可以通过获取公有函数的绝对地址来得到内存释放函数的绝对地址。因此,云平台需要获取公有函数的绝对地址和公有函数与内存释放函数的相对地址。

其中,获取应用程序调用的公有函数的绝对地址,包括:

(1)、接收携带有程序标识和公有函数的函数标识的地址读取指令;

(2)、在动态链接库中,查找应用程序调用的公有函数的绝对地址。

当公有函数被应用程序调用时,系统会为该公有函数分配内存地址,云平台将该内存地址确定为该公有函数的绝对地址存储在动态链接库中。当需要获取该公有函数的绝对地址时,云平台可以直接从动态链接库中读取该绝对地址。

由于公有函数被不同的应用程序调用时,系统会为该公有函数分配不同的内存地址,因此,在获取某一个应用程序调用的公有函数时,还需要获取该应用程序的程序标识。即,云平台接收到的地址读取指令中需要携带有程序标识和公有函数的函数标识,云平台根据程序标识和函数标识在动态链接库中查找该公有函数的绝对地址,并对该绝对地址进行显示。

需要说明的是,在将函数标识添加到地址获取指令之前,用户可以通过查看虚拟机源代码找到释放虚拟机占用的空闲内存的调用函数,再通过查看虚拟机的头文件确定出该调用函数中的具有调用内存释放函数的权限的公有函数,将该公有函数的函数标识添加到地址获取指令中。

在获取公有函数与私有函数的相对地址时,由于公有函数和内存释放函数的相对地址由预设的符号表提供,因此,用户可以通过查看该符号表,读取需要该公有函数与私有函数的相对地址。其中,该预设的符号表是由symbol库经过objdump得到的。

在确定了公有函数的绝对地址和公有函数与内存释放函数的相对地址后,该内存释放函数的绝对地址可以被确定为公有函数的绝对地址加上公有函数和内存释放函数的相对地址。因此,在用户获取到云平台显示的公有函数的绝对地址,以及,从符号表中读取到公有函数与私有函数的相对地址后,用户可以将公有函数的绝对地址加上相对地址,得到私有函数的绝对地址。

本发明实施例,通过接收携带有程序标识和内存释放函数的内存优化代码,该程序标识用于标识需要释放空闲内存的应用程序,该空闲内存是应用程序在前台运行时占用且在后台运行时不需占用的内存;通过内存优化代码检测应用程序是否从前台切换到后台运行;若通过内存优化代码检测出应用程序从前台切换到后台运行,则通过应用程序调用内存释放函数,该内存释放函数用于释放空闲内存,可以直接调用包含有内存释放函数的内存优化代码,对应用程序的空闲内存进行释放,解决了在云平台内存不足时才会触发内存资源回收,导致云平台一直处于内存资源紧张状态的问题,达到了提高云平台的处理能力的效果。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1