JackServer实例的管理方法和装置与流程

文档序号:11780071阅读:418来源:国知局
Jack Server实例的管理方法和装置与流程

本发明涉及软件编译技术,尤其涉及一种jackserver实例的管理方法和装置。



背景技术:

优般图(ubuntu)是一种linux操作系统,也称为友帮拓或乌班图,因其开源特性被广泛使用。例如,安卓(android)系统手机也使用ubuntu进行程序开发。

目前,有多个软件工程师可能会同时在一个ubuntu服务器进行程序开发,因而需要在ubuntu服务器上创建多个用户。每个用户在程序开发的过程中都会进行程序编译,例如android7.0以后的版本的android编译程序需要使用jackserver进行程序编译,而jackserver默认一个端口只能一个用户使用,且每一个用户编译时会创建一个jackserver实例。编译完成后jackserver并不会自动清除,而是长期占用大量内存。

随着用户数量的增多,大量的jackserver实例长期占用ubuntu服务器的内存,使得ubuntu服务器运行缓慢,影响程序开发的进度。



技术实现要素:

本发明提供一种jackserver实例的管理方法和装置,以实现自动清除编译结束后不需要的jackserver实例,有效节约内存,提升系统运行速度,提高开发效率。

第一方面,本发明实施例提供的一种jackserver实例的管理方法,包括:

在android项目编译结束后,检查当前jackserver实例的占用情况;

根据当前jackserver实例的占用情况判断当前jackserver实例是否被占用;

若当前jackserver实例被占用,则重新检查当前jackserver实例的占用情况;

若当前jackserver实例未被占用,则结束当前jackserver实例。

可选地,在检查当前jackserver实例的占用情况之前,还包括:

检查android项目是否编译结束,若android项目未编译结束,则等待android项目编译结束。

可选地,所述检查当前jackserver实例的占用情况,包括:

检测当前jackserver实例对应用户的用户进程中包含的编译进程的个数;

所述根据当前jackserver实例的占用情况判断当前jackserver实例是否被占用,包括:

判断所述用户进程中包含的编译进程的个数是否大于0;

若所述用户进程中包含的编译进程的个数等于0,则确定当前jackserver实例未被占用;

若所述用户进程中包含的编译进程的个数大于0,则确定当前jackserver实例被占用。

可选地,所述检测当前jackserver实例对应用户的用户进程中包含的编译进程的个数,包括:

查询所述用户进程中进程的指令的抬头字符串中是否包含预设的字符串,所述预设的字符串包含以下中的任意一个:make、mm或mmm;

当所述用户进程中进程的指令的抬头字符串中包含所述预设的字符串时,则用户进程中包含的编译进程个数的统计值自增1。

可选地,所述若当前jackserver实例未被占用,则结束当前jackserver实例进程,包括:

运行关闭jackserver实例执行指令,以结束当前jackserver实例进程。

可选地,所述检查jackserver实例对应的项目是否编译结束,包括:

判断所述jackserver实例对应的项目是否生成app文件或者image文件;

若所述jackserver实例对应的项目生成了app文件或者image文件,则确定所述jackserver实例对应的项目已编译结束。

第二方面,本发明实施例提供一种jackserver实例的管理装置,包括:

检测模块,用于在android项目编译结束后,检查当前jackserver实例的占用情况;

判断模块,用于根据当前jackserver实例的占用情况判断当前jackserver实例是否被占用;

检测模块,还用于在当前jackserver实例被占用时,重新检查当前jackserver实例的占用情况;

结束模块,用于在当前jackserver实例未被占用时,则结束当前jackserver实例。

可选地,所述检测模块,还用于:

在检查当前jackserver实例的占用情况之前,检查android项目是否编译结束,若android项目未编译结束,则等待android项目编译结束。

可选地,所述检测模块,具体用于:检测当前jackserver实例对应用户的用户进程中包含的编译进程的个数;

所述判断模块,具体用于:判断所述用户进程中包含的编译进程的个数是否大于0;

若所述用户进程中包含的编译进程的个数等于0,则确定当前jackserver实例未被占用;

若所述用户进程中包含的编译进程的个数大于0,则确定当前jackserver实例被占用。

可选地,所述检测模块,具体用于:查询所述用户进程中进程的指令的抬头字符串中是否包含预设的字符串,所述预设的字符串包含以下中的任意一个:make、mm或mmm;

当所述用户进程中进程的指令的抬头字符串中包含所述预设的字符串时,则用户进程中包含的编译进程个数的统计值自增1。

可选地,所述结束模块,还用于运行关闭jackserver实例执行指令,以结束当前jackserver实例进程。

可选地,所述检测模块,还用于:

判断所述jackserver实例对应的项目是否生成app文件或者image文件;

若所述jackserver实例对应的项目生成了app文件或者image文件,则确定所述jackserver实例对应的项目已编译结束。

本发明提供的jackserver实例的管理方法和装置,通过在android项目编译结束后,检查当前jackserver实例的占用情况,若检查确定当前jackserver实例未被占用,则结束当前jackserver实例。从而能够在编译结束后,自动释放未被占用的jackserver实例占用的内存,从而能够有效节约系统内存,提升系统运行速度,提高程序开发的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例一提供的jackserver实例的管理方法的流程图;

图2为本发明实施例二提供的jackserver实例的管理方法的流程图;

图3为本发明实施例三提供的jackserver实例的管理方法的流程图;

图4为本发明实施例一提供的jackserver实例的管理装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例一提供的jackserver实例的管理方法的流程图,如图1所示,本实施例的方法可以包括:

s101、在android项目编译结束后,检查当前jackserver实例的占用情况。

本实施例中,检查当前jackserver实例的占用情况,具体为:检查当前jackserver实例对应用户的用户进程中包含的编译进程的个数。在服务器中,每个jackserver实例对应一个用户,用户的用户进程中包括多个进程,多个进程中可能包括编译进程以及其他进程。

s102、根据当前jackserver实例的占用情况判断当前jackserver实例是否被占用。

在当前jackserver实例的占用情况为当前jackserver实例对应用户的用户进程中的编译进程数量时,根据当前jackserver实例的占用情况判断当前jackserver实例是否被占用,具体为:判断用户进程中包含的编译进程的个数是否大于0。若用户进程中包含的编译进程的个数等于0,则确定当前jackserver实例未被占用;若用户进程中包含的编译进程的个数大于0,则确定当前jackserver实例被占用。

若当前jackserver实例被占用时,则返回执行步骤s101,若当前jackserver实例未被占用时,执行步骤s103。

可选地,本实施例中,当前jackserver实例被占用时,可以间隔预设时间重新检查当前jackserver实例的占用情况;或者,以计算机运行的最小时间差(例如毫秒级)重新检查当前jackserver实例的占用情况。

s103、结束当前jackserver实例。

可以通过运行关闭jackserver实例执行指令,结束当前jackserver实例进程。该关闭jackserver实例执行指令例如是:jack-adminkill-server指令。本实施例中,结束当前jackserver实例即释放当前jackserver实例所占用的内存。

本实施例,通过在android项目编译结束后,检查当前jackserver实例的占用情况,若检查确定当前jackserver实例未被占用,则结束当前jackserver实例。从而能够在编译结束后,自动释放未被占用的jackserver实例占用的内存,从而能够有效节约系统内存,提升系统运行速度,提高程序开发的效率。

图2为本发明实施例二提供的jackserver实例的管理方法的流程图,如图2所示,本实施例的方法在图1所示方法的基础上,可以包括:

s201、检查android项目是否编译结束,若android项目未编译结束,则等待android项目编译结束。

具体地,判断android项目是否生成app文件或者image文件;若android项目生成了app文件或者image文件,则确定android项目已编译结束。若android项目未生产app文件或者image文件,则确定android项目没有编译结束。

s202、在android项目编译结束后,检查当前jackserver实例的占用情况。

s203、根据当前jackserver实例的占用情况判断当前jackserver实例是否被占用;若当前jackserver实例被占用,则返回执行步骤s202;若当前jackserver实例未被占用,则执行步骤s204。

s204、结束当前jackserver实例进程。

本实施例中,步骤s202-s204的具体实现过程参见图1所示方法中的相关描述,此处不再赘述。

图3为本发明实施例三提供的jackserver实例的管理方法的流程图,如图3所示,本实施例的方法在图1所示方法的基础上,可以包括:

s301、在android项目编译结束后,检测当前jackserver实例对应用户的用户进程中包含的编译进程的个数。

本实施例中,通过统计当前jackserver实例对应用户的用户进程中包含的编译进程的个数,检测当前jackserver实例的占用情况。

可选地,检测当前jackserver实例对应用户的用户进程中包含的编译进程的个数,具体为:查询用户进程中进程的指令的抬头字符串中是否包含预设的字符串,该预设的字符串包含以下中的任意一个:make、mm或mmm;当用户进程中进程的指令的抬头字符串中包含该预设的字符串时,则用户进程中包含的编译进程个数的统计值自增1。

s302、判断用户进程中包含的编译进程的个数是否大于0。

本实施例中,根据用户进程中包含的编译进程的个数是否为0来判断当前jackserver实例是否被占用。若用户进程中包含的编译进程的个数等于0,则确定jackserver实例没有被占用,执行步骤s303;若用户进程中包含的编译进程的个数大于0,则确定jackserver实例被占用,返回执行步骤s301。

s303、结束当前jackserver实例进程。

本实施例中,步骤s303的具体实现过程参见图1所示方法中的相关描述,此处不再赘述。

图4为本发明实施例一提供的jackserver实例的管理装置的结构示意图,如图4所示,本实施例的装置可以包括:检测模块10、判断模块20和结束模块30。检测模块10,用于在android项目编译结束后,检查当前jackserver实例的占用情况。判断模块20,用于根据当前jackserver实例的占用情况判断当前jackserver实例是否被占用。判断模块,还用于在当前jackserver实例被占用时,重新检查当前jackserver实例的占用情况。结束模块,用于在当前jackserver实例未被占用时,结束当前jackserver实例进程。

可选地,检测模块10,还用于:在检查当前jackserver实例的占用情况之前,检查android项目是否编译结束,若android项目未编译结束,则等待android项目编译结束。

可选地,检测模块10,具体用于:检测当前jackserver实例对应用户的用户进程中包含的编译进程的个数;

可选地,判断模块20,具体用于:判断用户进程中包含的编译进程的个数是否大于0;在用户进程中包含的编译进程的个数等于0时,确定当前jackserver实例未被占用;在用户进程中包含的编译进程的个数大于0时,确定当前jackserver实例被占用。

可选地,检测模块10,具体用于:查询用户进程中进程的指令的抬头字符串中是否包含预设的字符串,预设的字符串包含以下中的任意一个:make、mm或mmm;当用户进程中进程的指令的抬头字符串中包含预设的字符串时,则用户进程中包含的编译进程个数的统计值自增1。

本实施例可以执行上述图1-图3中任意一项所示的方法中的技术方案,其实现过程和技术效果与上述方法类似,此处不再赘述。

此外,本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当用户设备的至少一个处理器执行该计算机执行指令时,用户设备执行上述各种可能的方法。

其中,计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。另外,该asic可以位于用户设备中。当然,处理器和存储介质也可以作为分立组件存在于通信设备中。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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