• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    按需加載動態腳本語言代碼以減少內存使用制造技術

    技術編號:15529576 閱讀:148 留言:0更新日期:2017-06-04 16:53
    一種用于減少存儲用動態腳本語言編寫成的應用程序所需的內存空間量的方法和系統,其由計算機實現,將程序模塊加載到內存中并從所述程序模塊中移除程序代碼分類,如調試信息或函數定義等。所述方法和系統還接收針對調試信息的請求,或函數調用或查詢,并確定對應程序代碼是否在所述內存中;若不在,則識別所述程序模塊在存儲器中的存儲位置,并將包含對應程序代碼的另一個副本加載到所述內存中;將所述對應程序代碼加載并復制到內存中的所述程序模塊,并響應所述請求。

    Load dynamic scripting language code on demand to reduce memory usage

    A method and system for reducing storage applications using dynamic script language into the required amount of memory space, the realized by the computer, the program module is loaded into memory and from the program module to remove code classification, such as debugging information or function etc.. The method and system for debugging also receives a request for information, or function calls or query, and the corresponding program code in the memory; if not in the position to identify the program stored in the memory module, and the corresponding program code contains another copy is loaded into the memory; loading the corresponding code and copied to the program in memory, and in response to the request.

    【技術實現步驟摘要】
    【國外來華專利技術】按需加載動態腳本語言代碼以減少內存使用相關申請案交叉申請本專利技術要求于2015年2月23日遞交的專利技術名稱為“按需加載動態腳本語言代碼以減少內存使用”的第14/629,197號美國非臨時專利申請案的在先申請優先權,該在先申請的內容以引入的方式并入本文。
    本文大體涉及動態腳本語言代碼的編譯和加載,更具體地,涉及通過按需編譯和加載用動態腳本語言編寫成的應用程序源代碼以減少內存使用。
    技術介紹
    動態腳本語言廣泛應用于許多行業和學術領域。例如,JavaScript被廣泛認為是構建客戶端Web應用程序的主要計算機編程語言;PHP通常是用于建立服務器端Web應用程序的骨干;Python廣泛應用于建立高級和低級應用程序;Lua已廣泛應用在游戲行業和嵌入式系統中;R和Matlab已在特定應用中普及。一般情況下,動態腳本語言的性能帶來憂慮。例如,用動態腳本語言編寫成的應用程序通常運行較慢,且比基于靜態語言的應用程序使用更多的內存。但在許多場景下,內存使用至關重要。例如,在典型的嵌入式系統中,若應用程序所需的內存多過可用內存,應用程序將會崩潰。應用程序使用的內存通常包括代碼段和數據段。在許多應用程序中,所述代碼段最多可使用所需總內存的一半。因此,減少代碼段所需內存量是減少總應用程序內存使用的有效途徑。現有的減少代碼段所需內存量的方案包括重寫或重建應用程序,以移除不必要的代碼。此方案可行,因為應用程序通常包含應用程序的所有可能特征的源代碼,即使通常不執行某些特征。重寫或重建代碼能保證應用程序中只包含必要的代碼。然而,重寫或重建代碼是相對勞動密集型的,因此,相對昂貴。另外,純粹基于靜態信息確定有關代碼段的有效性和必要性是不是很明確。只有使用運行時間可用的信息才可能更確定。動態腳本語言使用更多內存空間的另一原因在于:通常默認動態腳本語言以編譯的對象代碼或字節碼在內存中存儲應用程序的所有相關調試信息。在某些情況下,所述調試信息占用編程代碼使用的內存空間的三分之一以上。但是,所述調試信息通常很少使用,例如,當應用程序執行期間出現錯誤或當執行期間調用了反射功能時使用。現有的減少代碼段所需內存量的方案還包括通過將應用程序源代碼預編譯成字節碼,以移除調試信息。例如,可使用“-s”命令拓展預編譯Lua源代碼,以除去所述源代碼中的所有調試信息,雖然對等方法在某些動態腳本語言中不可用。但是,使用這一方法不允許在運行時間獲取所述調試信息。此外,出現運行時間錯誤時,應用程序不能上報有用信息,如出現錯誤的代碼行數、與所述錯誤相關聯的變量名等。在一些情況下,由于運行時間所需的某些應用特征取決于調試信息的可用性,因此從代碼中除去調試信息是不可接受的方案。進一步地,移除調試信息會增加部署復雜性,因為在應用程序加載到內存之前,需要通過“-s”選項進行額外預編譯步驟以到達中間階段(即,字節碼),而通常動態腳本語言源代碼已直接執行。此外,經常使用常見數據壓縮算法對動態腳本語言代碼進行壓縮。雖然預編譯字節碼的未壓縮版本比已壓縮的源代碼占用的內存少,但壓縮所述預編譯代碼之后,可能占用比原始文本格式的源代碼更多的內存空間。因此,在某些應用程序中,例如在閃存有限的嵌入式系統中,理想的是存儲源代碼而非預編譯字節碼,以進一步減少所述內存量。
    技術實現思路
    根據本專利技術一實施例,用于減少存儲用動態腳本語言編寫成的應用程序所需內存空間的系統包括輸入/輸出設備,用于接收與用動態腳本語言編寫成的程序模塊中的一段程序代碼對應的請求。所述系統還包括按需加載器,用于確定所述一段程序代碼是否在內存中;若確定所述一段程序代碼不在所述內存中,則識別包含所述一段程序代碼的至少一部分所述程序模塊在存儲器中的存儲位置;定位所述一部分程序模塊的第二副本中的所述一段程序代碼;將所述一段程序代碼復制到所述內存中的所述程序模塊的第一副本中。所述系統還包括代碼加載器,用于將包含所述一段程序代碼的所述一部分程序模塊的所述第二副本從所述存儲器加載到所述內存。根據本專利技術的另一實施,用于減少存儲用動態腳本語言編寫成的應用程序所需內存空間的方法包括:接收與程序模塊中的一段程序代碼對應的請求;確定所述程序代碼是否在內存中,若不在,則識別包含所述一段程序代碼的至少一部分所述程序模塊在存儲器中的存儲位置。所述方法還包括將包含所述一段程序代碼的所述程序模塊的第二副本從存儲器所述加載到所述內存,并將所述一段程序代碼加載到所述一部分所述程序模塊的所述第二副本。所述方法還包括將所述一段程序代碼復制到所述內存中的所述程序模塊的第一副本中。附圖與下述描述將對本專利技術一個或多個例子進行詳細闡釋。本專利技術的其他特征、目的及優勢在描述、附圖及權利要求中顯而易見。附圖說明圖1為本專利技術實施例提供的使用按需源代碼加載器的動態腳本語言虛擬機的示意圖。圖2為能夠實現圖1中的動態腳本語言虛擬機的計算系統的示意圖。圖3為本專利技術實施例提供的按需加載動態腳本語言源代碼的方法流程圖。圖4為本專利技術實施例提供的編輯的函數占位符和編譯的動態腳本語言應用程序樹狀結構圖。圖5為本專利技術實施例提供的按需加載動態腳本語言源代碼函數的方法流程圖。具體實施方式圖1示出了本專利技術一實施例,其闡述了使用按需加載動態腳本語言源代碼過程的示例性動態腳本語言虛擬機10,以減少存儲用動態腳本語言源代碼12編寫成的應用程序所需的內存空間。所述虛擬機10包括代碼加載器14、按需加載器16、解釋器18、對象20和客戶端22。所述代碼加載器14讀取原始文本源代碼12,通過移除程序代碼分類編輯每個應用程序對象20,并將針對每個對象20的編輯的源代碼占位符加載或插入到內存。例如,在一實施例中,所述代碼加載器14在在線編譯期間從所述源代碼12中的每個函數對象中移除調試信息,并將針對每個對象20的編輯的源代碼加載到內存。在另一實施例中,所述代碼加載器14為所述原始源代碼12中的每個函數生成函數樁。例如,所述函數樁記錄元信息,如源代碼文件名、函數原型以及源文件中的函數的開始和結束位置(行號和列號)等。因此,所述虛擬機10移除程序代碼分類,如調試信息或函數代碼,并在所述虛擬機10將所述源代碼加載和編譯成字節碼到內存時,存儲可找到所述原始源代碼的位置。在一可選實施例中,編輯的函數代碼段數據存儲在二級存儲器中,如硬盤驅動器。與完整源代碼相比,源代碼占位符占用較少的內存空間,因此會降低動態腳本語言應用程序的內存消耗。后續調用或查詢所述對象20時,或請求調試信息時,所述按需加載器16提示所述代碼加載器14重新加載所述源代碼12,并創建包含完整函數的代碼段或調試信息的編譯的樹狀結構。所述按需加載器16搜索所述樹狀結構查找函數對象,其與所調用或查詢對象或所請求的信息對應。所述代碼段或調試信息從所述樹狀結構中復制到所述對象20,并返回給請求或調用客戶端22。在本專利技術各種實施例中,所述虛擬機10運行時間環境根據需求生成所請求的調試信息或代碼段,并動態修改所述函數樁以根據運行時間行為形成完整的函數對象。因此,內存中的代碼段或調試信息中只填充有運行時間實際執行的函數。所述源代碼中的所有其他函數在內存中均表示為編輯的占位符,例如,無調試信息的函數樁或函數對象。本文描述的按需加載動態腳本語言源代碼的系統具有如降低內存消耗等的優點。主要通本文檔來自技高網
    ...
    按需加載動態腳本語言代碼以減少內存使用

    【技術保護點】
    一種用于減少存儲用動態腳本語言編寫成的應用程序所需內存空間的系統,其特征在于,所述系統包括:輸入/輸出設備,用于接收與用動態腳本語言編寫成的程序模塊中的一段程序代碼對應的請求;按需加載器,用于確定所述一段程序代碼是否在內存中;若確定所述一段程序代碼不在所述內存中,則識別包含所述一段程序代碼的至少一部分所述程序模塊在存儲器中的存儲位置;定位所述一部分程序模塊的第二副本中的所述一段程序代碼;將所述一段程序代碼復制到所述內存中的所述程序模塊的第一副本中;代碼加載器,用于將包含所述一段程序代碼的所述一部分程序模塊的所述第二副本從所述存儲器加載到所述內存。

    【技術特征摘要】
    【國外來華專利技術】2015.02.23 US 14/629,1971.一種用于減少存儲用動態腳本語言編寫成的應用程序所需內存空間的系統,其特征在于,所述系統包括:輸入/輸出設備,用于接收與用動態腳本語言編寫成的程序模塊中的一段程序代碼對應的請求;按需加載器,用于確定所述一段程序代碼是否在內存中;若確定所述一段程序代碼不在所述內存中,則識別包含所述一段程序代碼的至少一部分所述程序模塊在存儲器中的存儲位置;定位所述一部分程序模塊的第二副本中的所述一段程序代碼;將所述一段程序代碼復制到所述內存中的所述程序模塊的第一副本中;代碼加載器,用于將包含所述一段程序代碼的所述一部分程序模塊的所述第二副本從所述存儲器加載到所述內存。2.根據權利要求1所述的系統,其特征在于,所述代碼加載器還將所述程序模塊的所述第一副本從所述存儲器加載到所述內存;將程序代碼分類從所述程序模塊的所述第一副本中移除,并將占位符插入所述程序模塊的所述第一副本。3.根據權利要求2所述的系統,其特征在于,從所述程序模塊的所述第一副本中移除的所述程序代碼分類包括調試信息和與從所述程序模塊的所述第一副本中移除的所述調試信息對應的請求。4.根據權利要求2所述的系統,其特征在于,從所述程序模塊的所述第一副本中移除的所述程序代碼分類包括函數定義和調用或查詢所述函數定義的請求。5.一種用于減少存儲用動態腳本語言編寫成的應用程序所需內存空間的方法,其特征在于,所述方法包括:通過處理器接收與用動態腳本語言編寫成的程序模塊中的一段程序代碼對應的請求;確定所述一段程序代碼是否在內存中;若確定所述一段程序代碼不在所述內存中,則識別包含所述一段程序代碼的至少一部分所述程序模塊在存儲器中的存儲位置;將包含所述一段程序代碼的所述一部分程序模塊的第二副本從所述存儲器加載到所述內存;定位所述一部分程序模塊的所述第二副本中的所述一段程序代碼;將所述一段程序代碼復制到所述內存中的所述程序模塊的第一副本中。6.根據權利要求5所述的方法,其特征在于,還包括:將所述程序模塊的所述第一副本從所述存儲器加載到所述內存;將程序代碼分類從所述程序模塊的所述第一副本中移除;將占位符插入所述程序模塊的所述第一副本。7.根據權利要求6所述的方法,其特征在于,從所述程序模塊的第一副本中移除的所述程序代碼分類包括...

    【專利技術屬性】
    技術研發人員:王海川葉寒棟吳芃
    申請(專利權)人:華為技術有限公司
    類型:發明
    國別省市:廣東,44

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 国产日韩AV免费无码一区二区三区| 亚洲av无码国产精品夜色午夜 | 免费无码一区二区| 小12箩利洗澡无码视频网站| 丰满少妇人妻无码专区| 亚洲精品无码一区二区| 无码人妻精品一区二区三区99不卡| 久久亚洲精品AB无码播放| 亚洲AV无码乱码在线观看性色扶| 国产精品无码无在线观看| 国产在线无码视频一区| 久久久无码精品亚洲日韩蜜臀浪潮| MM1313亚洲精品无码久久| 亚洲人成无码网站在线观看| 中文字幕无码av激情不卡| 亚洲av永久无码一区二区三区| 国产成人无码精品一区二区三区| 国产午夜无码片在线观看影院| AV无码久久久久不卡网站下载| 国产午夜鲁丝无码拍拍| 国产成人亚洲综合无码| 精品久久久久久无码人妻| 性饥渴少妇AV无码毛片| 久久99精品久久久久久hb无码| 国产亚洲精品a在线无码| 亚洲日韩乱码中文无码蜜桃臀网站| 免费无码又黄又爽又刺激 | 无码H黄肉动漫在线观看网站| 国产爆乳无码视频在线观看 | 无码亚洲成a人在线观看| 蜜芽亚洲av无码精品色午夜| 无码精品久久久久久人妻中字| 韩日美无码精品无码| 中文字幕无码无码专区| 中文字幕丰满伦子无码| 国产aⅴ激情无码久久久无码| 日韩人妻系列无码专区| 日韩精品无码Av一区二区| 一本色道无码道在线| 岛国无码av不卡一区二区| 国产亚洲精品a在线无码|