CN111061538A - 一种多Lua虚拟机内存优化方法及其系统 - Google Patents

一种多Lua虚拟机内存优化方法及其系统 Download PDF

Info

Publication number
CN111061538A
CN111061538A CN201911111787.8A CN201911111787A CN111061538A CN 111061538 A CN111061538 A CN 111061538A CN 201911111787 A CN201911111787 A CN 201911111787A CN 111061538 A CN111061538 A CN 111061538A
Authority
CN
China
Prior art keywords
target
global data
virtual machine
lua
lua virtual
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201911111787.8A
Other languages
English (en)
Inventor
钟朝龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhuhai Kingsoft Online Game Technology Co Ltd
Original Assignee
Zhuhai Kingsoft Online Game Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhuhai Kingsoft Online Game Technology Co Ltd filed Critical Zhuhai Kingsoft Online Game Technology Co Ltd
Priority to CN201911111787.8A priority Critical patent/CN111061538A/zh
Publication of CN111061538A publication Critical patent/CN111061538A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Abstract

本发明涉及一种多Lua虚拟机内存优化方法,包括S1、标记Dofile函数执行过程中已访问Lua虚拟机及虚拟机中的资源;S2、采集被标记资源的存储路径数据,根据已采集的所述存储路径数据生成地址列表;S3、在目标Lua虚拟机内检测目标全局数据;S4、调用并遍历所述地址列表,在所述已访问Lua虚拟机中检索所述目标全局数据;S5、复制所述目标全局数据并将其发送至所述目标Lua虚拟机。一种多Lua虚拟机内存优化系统,包括信息标记模块、地址列表生成模块、全局数据检测模块、全局数据检索模块以及全局数据调用模块。本发明能够在不改变多虚拟机结构的前提下,实现对内存资源的有效利用,进而提升工作效率。

Description

一种多Lua虚拟机内存优化方法及其系统
技术领域
本发明涉及计算机技术领域,特别涉及一种多Lua虚拟机内存优化方法及其系统。
背景技术
现如今,很多网络游戏的服务器中均使用了Lua技术;在其中每个Lua一般会分配一个对应的Lua虚拟机,以此保证每个Lua完全隔离,达到互不干扰的效果;基于多虚拟机结构的应用,Lua文件数量会增加,同时公共库等Lua文件的Dofile行为也会相应地增加;每当执行一次Dofile函数时,需要将某个Lua文件完全复制到新的虚拟机再解释运行,此时就会占用大量的内存资源,影响了工作效率。
为应对这种弊端,现有解决方案是将多虚拟机重构为单虚拟机形式;在单虚拟机结构下,所有存储在虚拟机内的文件可以相互访问,从而省略了先复制文件再解释运行的步骤;如此虽然可以节省内存资源,但也存在其他弊端,即同一项目周期内的脚本之间一般有所区别,在原有的隔离环境下它们的运行互不干扰,若重构为单虚拟机结构,则会导致不同脚本间的全局变量以及全局函数产生冲突,进而衍生出很多Bug,为解决这些Bug,又需要投入额外的人力成本,此举同样会影响工作效率。
因此,在不改变多虚拟机结构的前提下,如何实现内存资源的有效利用,提供工作效率是当前急需解决的技术问题。
发明内容
为解决上述现有技术中存在的技术问题,本发明提供了一种多Lua虚拟机内存优化方法及其系统,能够在不改变多虚拟机结构的前提下,实现对内存资源的有效利用,进而提升工作效率。
本发明为解决技术问题所采用的技术方案为:
一种多Lua虚拟机内存优化方法,包括以下步骤:
S1、标记Dofile函数执行过程中已访问Lua虚拟机及虚拟机中的资源;
S2、采集被标记资源的存储路径数据,根据已采集的所述存储路径数据生成地址列表;
S3、在目标Lua虚拟机内检测目标全局数据;
S4、调用并遍历所述地址列表,在所述已访问Lua虚拟机中检索所述目标全局数据;
S5、复制所述目标全局数据并将其发送至所述目标Lua虚拟机。
进一步,所述目标全局数据包括下面至少一项:全局变量、全局函数。
进一步,步骤S3还包括:若检测结果显示所述目标Lua虚拟机内已存在所述目标全局数据,则所述目标Lua虚拟机直接调用所述目标全局数据执行任务;若检测结果显示所述目标Lua虚拟机内不存在所述目标全局数据,则执行步骤S4。
进一步,对所述地址列表的遍历逆序进行。
一种多Lua虚拟机内存优化系统,包括以下模块:
信息标记模块,用于标记Dofile函数执行过程中已访问Lua虚拟机及虚拟机中的资源;
地址列表生成模块,用于采集被标记资源的存储路径数据,根据已采集的所述存储路径数据生成地址列表;
全局数据检测模块,用于在目标Lua虚拟机内检测目标全局数据;
全局数据检索模块,用于调用并遍历所述地址列表,在所述已访问Lua虚拟机中检索所述目标全局数据;以及
全局数据调用模块,用于复制所述目标全局数据并将其发送至所述目标Lua虚拟机。
进一步,所述目标全局数据包括下面至少一项:全局变量、全局函数。
进一步,所述全局数据检测模块还包括:若检测结果显示所述目标Lua虚拟机内已存在所述目标全局数据,则所述目标Lua虚拟机直接调用所述目标全局数据执行任务;若检测结果显示所述目标Lua虚拟机内不存在所述目标全局数据,则进行下一步。
进一步,所述全局数据检索模块中对所述地址列表的遍历逆序进行。
一种计算机可读存储介质,其上存储有计算机指令,其特征在于该指令被处理器执行时实现任一项所述的方法的步骤。
本发明的有益效果为:能够在不改变多虚拟机结构的前提下,实现对内存资源的有效利用,进而提升工作效率。
附图说明
下面结合附图和实施例对本发明进一步地说明:
图1所示为根据本发明的总体流程图;
图2所示为根据本发明的模块连接图;
图3所示为根据本发明的具体实施例A;
图4所示为根据本发明的具体实施例B。
具体实施方式
应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电束上运行。
此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。
计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。
需要说明的是,如无特殊声明,在本公开中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本发明。本文所使用的术语“和/或”包括一个或多个的所列项目的任意的组合。
应当理解,本文所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本发明的实施例,并且除非另外要求,否则不会对本发明的范围施加限制。
为便于对本发明的理解,以下对部分名词进行相应的解释:
Lua虚拟机:即Luastate,不同的Luastate之间完全隔离;
Dofile:Lua底层函数,用于包含某个Lua文件,已达到复用的目的;
ParseFile:Lua底层函数,用于把Lua代码转为运行时的字节码。
接下来结合附图对本发明的具体实施例作进一步说明;
参照图1所示为根据本发明的总体流程图,包括以下步骤:
S1、标记Dofile函数执行过程中已访问Lua虚拟机及虚拟机中的资源;
S2、采集被标记资源的存储路径数据,根据已采集的存储路径数据生成地址列表;
S3、在目标Lua虚拟机内检测目标全局数据,若检测结果显示目标Lua虚拟机内已存在目标全局数据,则目标Lua虚拟机直接调用目标全局数据执行任务;若检测结果显示目标Lua虚拟机内不存在目标全局数据,则执行步骤S4;此处所提及的目标全局数据包括但不限于全局变量、全局函数。
S4、调用并遍历地址列表,在已访问Lua虚拟机中检索目标全局数据;对地址列表的遍历以逆序的方式进行;只有逆序遍历才能保证和原来的结果一致,因为Dofile默认是后面Dofile产生的全局数据会覆盖前面的内容;实际上我们某个Lua文件会用到的公共函数是少量的,这样做可以减少占用的内存资源,并且减少额外的Parsefile操作。
S5、复制目标全局数据并将其发送至目标Lua虚拟机。
参照图2所示为根据本发明的模块连接图,包括以下模块:
一种多Lua虚拟机内存优化系统,包括以下模块:
信息标记模块,用于标记Dofile函数执行过程中已访问Lua虚拟机及虚拟机中的资源;地址列表生成模块,与信息标记模块连接实现交互,用于采集被标记资源的存储路径数据,根据已采集的存储路径数据生成地址列表;全局数据检测模块,与地址列表生成模块连接实现交互,用于在目标Lua虚拟机内检测目标全局数据;全局数据检索模块,与全局数据检测模块连接实现交互,用于调用并遍历地址列表,在已访问Lua虚拟机中检索目标全局数据;以及全局数据调用模块,与全局数据检索模块连接实现交互,用于复制目标全局数据并将其发送至目标Lua虚拟机。
参照图3所示为根据本发明的具体实施例A:
实施例A展示的是另一种形式的流程图,即首先在运行当前虚拟机时,需调用Max函数,进而检查当前虚拟机内是否存在Max函数,若存在,则直接调用,任务结束;若不存在,则依据地址列表对之前标记的虚拟机进行逆序遍历;依次寻获资源对应所在的虚拟机;检查对应虚拟机内是否存在Max函数,若存在,则复制Max函数至当前虚拟机并进行调用;若不存在则返回地址列表遍历环节并循环执行,直至获取Max函数。
参照图4所示为根据本发明的具体实施例B:
实施例B展示的是基于实施例A的具象化体现,图表中共计展示了三个虚拟机,即A.lua、Math.lua、Common.lua;在依次对Common.lua和Math.lua执行Dofile操作时,已经通过标记记录形成了虚拟机列表;在A.lua内运行某一任务时,需要调用Max函数,进而执行实施例A中的步骤,因为遍历操作是逆序进行的,所以首先查询Common.lua,发现其中未存在Max函数,进而查询Math.lua,获取Max函数,并将其从虚拟机2,即Math.lua,复制到虚拟机1A.lua中并进行调用,这一过程无需将Common.lua和Math.lua中的函数全部复制至A.lua中再依次解释运行,只需查询并将目标函数复制过来即可,从而达成到了内存使用优化的目的。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。

Claims (9)

1.一种多Lua虚拟机内存优化方法,其特征在于,包括以下步骤:
S1、标记Dofile函数执行过程中已访问Lua虚拟机及虚拟机中的资源;
S2、采集被标记资源的存储路径数据,根据已采集的所述存储路径数据生成地址列表;
S3、在目标Lua虚拟机内检测目标全局数据;
S4、调用并遍历所述地址列表,在所述已访问Lua虚拟机中检索所述目标全局数据;
S5、复制所述目标全局数据并将其发送至所述目标Lua虚拟机。
2.根据权利要求1所述的多Lua虚拟机内存优化方法,其特征在于,所述目标全局数据包括下面至少一项:全局变量、全局函数。
3.根据权利要求1所述的多Lua虚拟机内存优化方法,其特征在于,步骤S3还包括:若检测结果显示所述目标Lua虚拟机内已存在所述目标全局数据,则所述目标Lua虚拟机直接调用所述目标全局数据执行任务;若检测结果显示所述目标Lua虚拟机内不存在所述目标全局数据,则执行步骤S4。
4.根据权利要求1所述的多Lua虚拟机内存优化方法,其特征在于,对所述地址列表的遍历逆序进行。
5.一种多Lua虚拟机内存优化系统,其特征在于,包括以下模块:
信息标记模块,用于标记Dofile函数执行过程中已访问Lua虚拟机及虚拟机中的资源;
地址列表生成模块,用于采集被标记资源的存储路径数据,根据已采集的所述存储路径数据生成地址列表;
全局数据检测模块,用于在目标Lua虚拟机内检测目标全局数据;
全局数据检索模块,用于调用并遍历所述地址列表,在所述已访问Lua虚拟机中检索所述目标全局数据;以及
全局数据调用模块,用于复制所述目标全局数据并将其发送至所述目标Lua虚拟机。
6.根据权利要求5所述的多Lua虚拟机内存优化系统,其特征在于,所述目标全局数据包括下面至少一项:全局变量、全局函数。
7.根据权利要求5所述的多Lua虚拟机内存优化方法,其特征在于,所述全局数据检测模块还包括:若检测结果显示所述目标Lua虚拟机内已存在所述目标全局数据,则所述目标Lua虚拟机直接调用所述目标全局数据执行任务;若检测结果显示所述目标Lua虚拟机内不存在所述目标全局数据,则进行下一步。
8.根据权利要求5所述的多Lua虚拟机内存优化方法,其特征在于,所述全局数据检索模块中对所述地址列表的遍历逆序进行。
9.一种计算机可读存储介质,其上存储有计算机指令,其特征在于该指令被处理器执行时实现如权利要求1至4中任一项所述的方法的步骤。
CN201911111787.8A 2019-11-14 2019-11-14 一种多Lua虚拟机内存优化方法及其系统 Pending CN111061538A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911111787.8A CN111061538A (zh) 2019-11-14 2019-11-14 一种多Lua虚拟机内存优化方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911111787.8A CN111061538A (zh) 2019-11-14 2019-11-14 一种多Lua虚拟机内存优化方法及其系统

Publications (1)

Publication Number Publication Date
CN111061538A true CN111061538A (zh) 2020-04-24

Family

ID=70297908

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911111787.8A Pending CN111061538A (zh) 2019-11-14 2019-11-14 一种多Lua虚拟机内存优化方法及其系统

Country Status (1)

Country Link
CN (1) CN111061538A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022068001A1 (zh) * 2020-09-29 2022-04-07 苏州亿歌网络科技有限公司 基于gdb调试lua的方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9460284B1 (en) * 2015-06-12 2016-10-04 Bitdefender IPR Management Ltd. Behavioral malware detection using an interpreter virtual machine
US20180074956A1 (en) * 2016-09-09 2018-03-15 Alibaba Group Holding Limited Method, apparatus, and electronic device for modifying memory data of a virtual machine
CN109408323A (zh) * 2018-09-18 2019-03-01 珠海金山网络游戏科技有限公司 一种服务器lua性能热点分析方法
CN109496296A (zh) * 2016-07-26 2019-03-19 微软技术许可有限责任公司 使远程存储访问在虚拟化环境中显示为本地的硬件

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9460284B1 (en) * 2015-06-12 2016-10-04 Bitdefender IPR Management Ltd. Behavioral malware detection using an interpreter virtual machine
CN109496296A (zh) * 2016-07-26 2019-03-19 微软技术许可有限责任公司 使远程存储访问在虚拟化环境中显示为本地的硬件
US20180074956A1 (en) * 2016-09-09 2018-03-15 Alibaba Group Holding Limited Method, apparatus, and electronic device for modifying memory data of a virtual machine
CN109408323A (zh) * 2018-09-18 2019-03-01 珠海金山网络游戏科技有限公司 一种服务器lua性能热点分析方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王诗伟: ""Lua虚拟机的机制分析"" *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022068001A1 (zh) * 2020-09-29 2022-04-07 苏州亿歌网络科技有限公司 基于gdb调试lua的方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN110096338B (zh) 智能合约执行方法、装置、设备及介质
CN111831287B (zh) 用于确定执行代码段所需的资源的方法、设备和程序产品
US8650538B2 (en) Meta garbage collection for functional code
CN103718159B (zh) 图像处理软件开发方法、图像处理软件开发装置
US9524179B2 (en) Virtual-machine-deployment-action analysis
CN105849698B (zh) 动态编程中的执行防护
US20180025162A1 (en) Application program analysis apparatus and method
CN103678098A (zh) 一种hadoop程序测试的方法和系统
US9218139B2 (en) Minimally disruptive virtual machine snapshots
JP2021530756A (ja) ポーズレスなガベージ・コレクションのための活性化フレームを表す方法および装置
US20180196669A1 (en) Reduced save and restore instructions for call-clobbered registers
US11789775B2 (en) Progress visualization of computational job
CN108595178B (zh) 一种基于hook的数据采集方法、装置及设备
US8769498B2 (en) Warning of register and storage area assignment errors
CN111061538A (zh) 一种多Lua虚拟机内存优化方法及其系统
US20070168742A1 (en) Isolating code modules
US10452534B2 (en) Asynchronous operation query
CN110737438A (zh) 一种数据处理方法和装置
CN112596823B (zh) 安全管控方法、装置及电子设备
CN109947476B (zh) 一种运行时栈空间的统计方法及系统
US9032372B2 (en) Runtime environment and method for non-invasive monitoring of software applications
JP5525658B2 (ja) 計算機、リソース使用量計算方法及びリソース使用量計算プログラム
US10671397B2 (en) Reduced save and restore instructions for call-clobbered registers
CN111324332A (zh) 大数据任务的处理方法及系统、电子设备、存储介质
CN105446718B (zh) 基于红帽软件包管理器的软件管理方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination