[發明專利]基于緩存的groovy腳本調用方法、裝置、設備及存儲介質在審
| 申請號: | 202210147905.6 | 申請日: | 2022-02-17 |
| 公開(公告)號: | CN114546353A | 公開(公告)日: | 2022-05-27 |
| 發明(設計)人: | 陳章 | 申請(專利權)人: | 深圳壹賬通智能科技有限公司 |
| 主分類號: | G06F8/30 | 分類號: | G06F8/30;G06F8/41;G06F9/445 |
| 代理公司: | 深圳國新南方知識產權代理有限公司 44374 | 代理人: | 姜宇 |
| 地址: | 518000 廣東省深圳市前海深港合作區前*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 緩存 groovy 腳本 調用 方法 裝置 設備 存儲 介質 | ||
本發明公開了一種基于緩存的groovy腳本調用方法、裝置、設備及存儲介質,其中方法包括:系統啟動時,遍歷本地服務器中所有的groovy腳本,并對每個groovy腳本執行parse操作,將生成的script對象緩存至預設的內存中;接收到調用目標groovy腳本的指令時,從內存中調用與目標groovy腳本對應的目標script對象。本發明通過在系統啟動時,預先對所有的groovy腳本進行parse操作,并將生成的script對象緩存,在調用groovy腳本時直接從緩存中獲取相應的script對象即可,從而避免了groovy腳本重復調用時生成的script對象占滿perm區。
技術領域
本申請涉及計算機技術領域,特別是涉及一種基于緩存的groovy腳本調用方法、裝置、設備及存儲介質。
背景技術
Groovy是一門基于JVM的動態語言,同時也是一門面向對象的語言,語法上和Java非常相似。Groovy代碼能夠與Java代碼很好地結合,也能用于擴展現有代碼。相對于Java,groovy在編寫代碼的靈活性上有非常明顯的提升。Groovy是動態編譯語言,廣泛用作腳本語言和快速原型語言。Groovy代碼通常要比Java代碼更容易編寫,而且編寫起來也更快。同時Groovy已經實現了java不具備的語言特性:1.函數字面值;2.對集合的一等支持;3.對正則表達式的一等支持;4.對xml的一等支持;由于以上幾大優點,groovy在基于java語言開發的系統中有廣泛的應用。
目前,在對java與groovy集成中常出現perm區爆滿的問題。Groovy使用時存在的問題是因為對于同一個groovy腳本,groovy執行引擎都會不同的命名,且命名與時間戳有關系。這就導致即使groovy腳本未發生任何變化,每次執行parse方法都會新生成一個腳本對應的script對象,且由GroovyClassLoader進行加載,不斷增大perm區。在GroovyClassLoader代碼中有一個script對象的緩存發現每次編譯腳本時都會在Map中緩存這個對象,每次groovy編譯腳本后,都會緩存該腳本的script對象,下次編譯該腳本時,會優先從緩存中讀取,這樣節省掉編譯的時間。這個緩存的Map由GroovyClassLoader持有,key是腳本的類名,這就導致每個腳本對應的script對象都存在引用,無法被gc清理掉,進而導致perm區爆滿,用戶體驗不佳。
發明內容
本申請提供一種基于緩存的groovy腳本調用方法、裝置、設備及存儲介質,以解決groovy腳本調用時perm區爆滿的問題。
為解決上述技術問題,本申請采用的一個技術方案是:提供一種基于緩存的groovy腳本調用方法,包括:系統啟動時,遍歷本地服務器中所有的groovy腳本,并對每個groovy腳本執行parse操作,將生成的script對象緩存至預設的內存中;接收到調用目標groovy腳本的指令時,從內存中調用與目標groovy腳本對應的目標script對象。
作為本申請的進一步改進,系統啟動時,遍歷本地服務器中所有的groovy腳本,并對每個groovy腳本執行parse操作,將生成的script對象緩存至預設的內存中,包括:系統啟動時,遍歷本地服務器中所有的groovy腳本,并獲取每個groovy腳本的預先設置的并發執行數;對每個groovy腳本執行與并發執行數相同次數的parse操作,生成與并發執行數相同數量個script對象以及與script對象對應的唯一鍵;在內存中創建內存池且將內存池與唯一鍵一一對應,并將與唯一鍵對應的多個script對象存儲至內存池中;接收到調用目標groovy腳本的指令時,從內存中調用與目標groovy腳本對應的目標script對象,包括:接收到調用目標groovy腳本的指令時,根據目標groovy腳本的目標唯一鍵從內存中查找對應的目標內存池,并從目標內存池中隨機調用一個與目標groovy腳本對應目標script對象。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于深圳壹賬通智能科技有限公司,未經深圳壹賬通智能科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202210147905.6/2.html,轉載請聲明來源鉆瓜專利網。





