JackServer實例的管理方法和裝置與流程
2023-09-22 21:39:55

本發明涉及軟體編譯技術,尤其涉及一種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、磁碟或者光碟等各種可以存儲程序代碼的介質。
最後應說明的是:以上各實施例僅用以說明本發明的技術方案,而非對其限制;儘管參照前述各實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特徵進行等同替換;而這些修改或者替換,並不使相應技術方案的本質脫離本發明各實施例技術方案的範圍。