CN112394941A - 代码预热方法、装置、电子设备及存储介质 - Google Patents

代码预热方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN112394941A
CN112394941A CN202011297533.2A CN202011297533A CN112394941A CN 112394941 A CN112394941 A CN 112394941A CN 202011297533 A CN202011297533 A CN 202011297533A CN 112394941 A CN112394941 A CN 112394941A
Authority
CN
China
Prior art keywords
preheated
executing
code
type
request parameter
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
CN202011297533.2A
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.)
JD Digital Technology Holdings Co Ltd
Original Assignee
JD Digital Technology Holdings 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 JD Digital Technology Holdings Co Ltd filed Critical JD Digital Technology Holdings Co Ltd
Priority to CN202011297533.2A priority Critical patent/CN112394941A/zh
Publication of CN112394941A publication Critical patent/CN112394941A/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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • G06F8/4442Reducing the number of cache misses; Data prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例涉及一种代码预热方法、装置、电子设备及存储介质,所述方法包括:在系统启动过程中,确定待预热方法以及所述待预热方法的方法类型;执行所述待预热方法;若所述待预热方法的方法类型为设定类型,则执行与所述待预热方法对应的撤销操作以撤销所述待预热方法的执行结果。由此,可以实现在系统运行过程中,当首次执行热点代码时即可执行直接编译后的机器码,提高热点代码的执行效率,尤其是在调用热点代码的业务请求首次涌入并且是大并发涌入的情况下,可避免系统对部分业务请求的处理超时。

Description

代码预热方法、装置、电子设备及存储介质
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种代码预热方法、装置、电子设备及存储介质。
背景技术
在Java虚拟机(比如HotSpot)中,Java程序最初是通过解释器进行解析执行的,当Java虚拟机发现某个方法的执行特别频繁时,比如某个方法在单位时间内的执行次数达到设定阈值时,则将该方法认定为热点代码。为了提高热点代码的执行效率,Java虚拟机通过JIT编译器(Just-In-Time Compiler,即时编译器)将热点代码编译成机器码并存储在缓存区中,下一次执行热点代码时则执行直接编译后的机器码即可。
然而,由上述描述可知,在现有技术中,当系统运行一段时间之后,Java虚拟机才能够识别出热点代码,这也就是说,热点代码被首次执行时是通过解释器进行解释执行的,这将导致在需要调用热点代码的业务请求首次涌入并且是大并发涌入的情况下造成设备负载飙升,CPU使用率飙升,进而导致系统针对部分业务请求的处理超时。
发明内容
鉴于此,为解决上述首次执行热点代码时容易导致业务系统对业务请求的处理超时的技术问题,本发明实施例提供一种代码预热方法、装置、电子设备及存储介质。
第一方面,本发明实施例提供一种代码预热方法,所述方法包括:
在系统启动过程中,确定待预热方法以及所述待预热方法的方法类型;
执行所述待预热方法;
若所述待预热方法的方法类型为设定类型,则执行与所述待预热方法对应的撤销操作以撤销所述待预热方法的执行结果。
在一个可能的实施方式中,所述确定待预热方法以及所述待预热方法的方法类型,包括:
若方法被设置有类型标识,则将所述方法确定为待预热方法,以及根据所述类型标识确定所述待预热方法的方法类型。
在一个可能的实施方式中,所述执行待预热方法,包括:
获取所述待预热方法的请求参数对象;
从指定存储介质中获取所述待预热方法对应的请求参数值;
利用所述请求参数值对所述待预热方法的请求参数对象进行赋值并执行所述待预热方法。
在一个可能的实施方式中,所述执行与所述待预热方法对应的撤销操作以撤销所述待预热方法的执行结果,包括:
删除执行所述待预热方法而生成的文件数据。
在一个可能的实施方式中,在所述执行所述待预热方法之前,还包括:
启动数据库事务;
所述执行与所述待预热方法对应的撤销操作以撤销所述待预热方法的执行结果,包括:
回滚所述数据库事务以撤销执行所述待预热方法而对数据库进行的更改。
第二方面,本发明实施例提供一种代码预热装置,所述装置包括:
确定模块,用于在系统启动过程中,确定待预热方法以及所述待预热方法的方法类型;
第一执行模块,用于执行所述待预热方法;
第二执行模块,用于若所述待预热方法的方法类型为设定类型,则执行与所述待预热方法对应的撤销操作以撤销所述待预热方法的执行结果。
在一个可能的实施方式中,所述确定模块具体用于:
若方法被设置有类型标识,则将所述方法确定为待预热方法,以及根据所述类型标识确定所述待预热方法的方法类型。
在一个可能的实施方式中,所述第一执行模块22具体用于:
获取所述待预热方法的请求参数对象;
从指定存储介质中获取所述待预热方法对应的请求参数值;
利用所述请求参数值对所述待预热方法的请求参数对象进行赋值并执行所述待预热方法。
在一个可能的实施方式中,所述第二执行模块具体用于:
删除执行所述待预热方法而生成的文件数据。
在一个可能的实施方式中,还包括:
事务启动模块,用于启动数据库事务;
所述第二执行模块具体用于:
回滚所述数据库事务以撤销执行所述待预热方法而对数据库进行的更改。
第三方面,本发明实施例提供一种电子设备,包括:处理器和存储器,所述处理器用于执行所述存储器中代码预热程序,以实现第一方面中任一项所述的代码预热方法。
第四方面,本发明实施例提供一种存储介质,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现第一方面中任一项所述的代码预热方法。
本发明实施例提供的技术方案,通过在系统启动过程中,确定待预热方法以及待预热方法的方法类型,执行待预热方法,可以实现在系统启动后,也即系统运行过程中,当首次执行热点代码时即可执行直接编译后的机器码,提高热点代码的执行效率,尤其是在调用热点代码的业务请求首次涌入并且是大并发涌入的情况下,可避免系统对部分业务请求的处理超时;同时通过在执行完待预热代码后,若待预热方法的方法类型为设定类型,则执行与待预热方法对应的撤销操作以撤销待预热方法的执行结果,可避免Java代码预热过程对实际业务造成影响。
附图说明
图1为本发明一示例性实施例提供的一种代码预热方法的实施例流程图;
图2为本发明一示例性实施例提供的另一种代码预热方法的实施例流程图;
图3为本发明一示例性实施例提供的又一种代码预热方法的实施例流程图;
图4为本发明一示例性实施例提供的一种代码预热装置的实施例框图;
图5为本发明实施例提供的一种的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中,Java虚拟机在执行Java程序时,可通过热点探测方法确定某个方法是不是热点代码,当认定某个方法为热点代码时,则可通过JIT编译器将热点代码编译成机器码并存储在缓存区中,下一次执行热点代码时则执行直接编译后的机器码即可,如此可提高热点代码的执行效率。上述热点探测方法可为基于采样的热点探测、基于计数器的热点探测,本发明实施例对此不再赘述。
然而,由于在现有技术中,系统运行一段时间之后,Java虚拟机才能够识别出热点代码,这也就是说,热点代码被首次执行时是通过解释器进行解释执行的,如此将导致在需要调用热点代码的业务请求首次涌入并且是大并发涌入的情况下造成设备负载飙升,CPU使用率飙升,进而导致系统针对部分业务请求的处理超时。
基于此,本发明提供一种代码预热方法,该方法通过在系统启动过程中即对热点代码进行预热,从而实现在系统启动后,也即系统运行过程中,当首次执行热点代码时即可执行直接编译后的机器码,提高热点代码的执行效率,尤其是在调用热点代码的业务请求首次涌入并且是大并发涌入的情况下,可避免系统对部分业务请求的处理超时。
下面结合附图以具体实施例对本发明提供的代码预热方法做进一步的解释说明,实施例并不构成对本发明实施例的限定。
参见图1,为本发明一示例性实施例提供的一种代码预热方法的实施例流程图。如图1所示,该方法可包括以下步骤:
步骤101、在系统启动过程中,确定待预热方法以及待预热方法的方法类型。
由上述描述可知,本发明实施例提供的代码预热方法应用于系统启动过程中。这里所说的系统启动是广义的,可包括系统重启,也可包括系统发布上线时的系统启动。
作为一个实施例,在应用中,可由开发人员根据实际业务场景事先设置需要进行预热的方法,也即待预热方法。作为一个可选的实现方式,可由开发人员为每一方法设置一个标识,用于表示方法是否需要进行预热。比如,若标识为1,表示方法需要预热,若标识为0,表示方法不需要预热。
进一步地,还可由开发人员事先对待预热方法的方法类型进行标识。可选的,上述方法类型包括但不限于:内存计算方法、IO操作方法、HTTP(HyperText TransferProtocol,超文本传输协议)调用方法、RPC(Remote Procedure Call Protocol,远程过程调用协议)调用方法等。至于对待预热方法的方法类型进行标识的作用,在下文中会有描述,这里先不做详述。
作为一个可选的实现方式,可由开发人员为需要进行预热的方法,也即待预热方法设置一个类型标识,用于表示待预热方法的方法类型。比如,若类型标识为00,表示方法类型为内存计算方法;若类型标识为01,表示方法类型为IO操作方法;若类型标识为10,表示方法类型为HTTP调用方法;若类型标识为11,表示方法类型为RPC调用方法。可选的,可使用Java注解的方式实现上述类型标识。
需要说明的是,上述描述并不意味着凡是属于上述举例出的三种方法类型的方法就一定是需要预热的方法,换言之,方法是否需要预热与方法类型并无决定性关联关系,而是取决于实际的业务场景。举例来说,若RPC调用方法的提供方不允许外部对自身的业务数据进行操作,则不建议将该RPC调用方法设置为待预热方法。
基于此,在本步骤101中,可通过确定方法是否被设置有类型标识来确定方法是否为待预热方法,具体而言,若方法被设置有类型标识,则将方法确定为待预热方法。进一步地,还可以根据类型标识确定待预热方法的方法类型。
步骤102、执行待预热方法。
作为一个实施例,在应用中,可由开发人员根据实际业务场景事先为待预热方法设置请求参数值。可选的,可通过数据库或日志文件存储开发人员为待预热方法设置的请求参数值。
基于此,在本步骤102中,执行待预热方法的过程包括:获取待预热方法的请求参数对象,从指定存储介质中获取该待预热方法对应的请求参数值,利用获取到的请求参数值对该待预热方法的请求参数对象进行赋值并执行该待预热方法。
可选的,可使用Java反射技术获取待预热方法的请求参数对象。
可选的,上述指定存储介质为上述用于存储开发人员为待预热方法设置的请求参数值的数据库或日志文件。
步骤103、若待预热方法的方法类型为设定类型,则执行与待预热方法对应的撤销操作以撤销待预热方法的执行结果。
在应用中,由于在Java代码预热过程中执行待预热方法所得到的执行结果并不是实际业务所需要的,甚至有可能影响实际业务,因此,本发明实施例提出,在执行完步骤102之后,继续执行步骤103,以撤销待预热方法的执行结果,从而避免Java代码预热过程对实际业务造成影响。
作为一个实施例,由步骤103的描述可见,并非针对所有方法类型的待预热方法都执行步骤103,而是在待预热方法的方法类型为设定类型时,执行与待预热方法对应的撤销操作以撤销待预热方法的执行结果。其中,由于在实践中,执行IO操作方法会导致业务数据的更改,比如生成文件数据、向数据库中写入数据、修改/删除数据库中的数据等,因此,上述设定类型可为IO操作方法。换言之,在本步骤103中,若待预热方法的方法类型为IO操作方法,则执行与待预热方法对应的撤销操作以撤销待预热方法的执行结果。
作为一个可选的实现方式,若执行待预热方法生成了文件数据,则可删除执行待预热方法而生成的文件数据。
作为另一个可选的实现方式,若执行待预热方法对数据库进行了更改(包括添加数据、修改/删除数据),则可通过数据库事务回滚机制撤销待预热方法的执行结果。具体而言,可在执行待预热方法之前,启动数据库事务,在执行完待预热方法之后,回滚数据库事务,从而实现撤销数据库事务启动之后对数据库所做的一切操作,也即撤销待预热方法的执行结果。
此外,若在Java代码预热过程中产生异常,则可直接终止Java代码预热操作,系统则可继续执行启动。由此可见,本发明提供的代码预热方法并不会对系统启动造成影响。
本发明实施例提供的技术方案,通过在系统启动过程中,确定待预热方法以及待预热方法的方法类型,执行待预热方法,可以实现在系统启动后,也即系统运行过程中,当首次执行热点代码时即可执行直接编译后的机器码,提高热点代码的执行效率,尤其是在调用热点代码的业务请求首次涌入并且是大并发涌入的情况下,可避免系统对部分业务请求的处理超时;同时通过在执行完待预热代码后,若待预热方法的方法类型为设定类型,则执行与待预热方法对应的撤销操作以撤销待预热方法的执行结果,可避免Java代码预热过程对实际业务造成影响。
参见图2,为本发明一示例性实施例提供的另一种代码预热方法的实施例流程图。如图2所示,该方法可包括以下步骤:
步骤201、在系统启动过程中,确定待预热方法以及待预热方法的方法类型。
作为一个实施例,在应用中,可由开发人员为待预热方法设置一个类型标识,用于表示待预热方法的方法类型。可选的,可使用Java注解的方式实现上述类型标识。
基于此,在本步骤201中,可通过确定方法是否被设置有类型标识来确定方法是否为待预热方法,具体而言,若方法被设置有类型标识,则将方法确定为待预热方法。进一步地,还可以根据类型标识确定待预热方法的方法类型。
步骤202、获取待预热方法的请求参数对象,以及从指定存储介质中获取该待预热方法对应的请求参数值。
上述指定存储介质可为数据库或日志文件,存储有开发人员为待预热方法设置的请求参数值。
在应用中,可使用Java反射技术获取待预热方法的请求参数对象。
步骤203、利用获取到的请求参数值对该待预热方法的请求参数对象进行赋值并执行该待预热方法;若待预热方法的方法类型为IO操作方法,则继续执行步骤204或步骤205;若待预热方法的方法类型为内存计算方法,则结束流程。
由于在实践中,执行IO操作方法会导致业务数据的更改,比如生成文件数据、向数据库中写入数据、修改/删除数据库中的数据等,而执行内存计算方法通常不会导致业务数据的更改,因此,在执行完待预热方法后,若待预热方法为内存计算方法,则可结束流程;而若待预热方法为IO操作方法,则在执行完待预热方法后,继续执行步骤204或步骤205,以撤销待预热方法的执行结果。
步骤204、若执行待预热方法生成了文件数据,则删除执行待预热方法而生成的文件数据。
步骤205、若执行待预热方法对数据库进行了更改,则回滚数据库事务以撤销执行所述待预热方法而对数据库进行的更改。
本发明实施例提供的技术方案,通过在系统启动过程中执行待预热方法,可以实现在系统启动后,也即系统运行过程中,当首次执行热点代码时即可执行直接编译后的机器码,提高热点代码的执行效率,尤其是在调用热点代码的业务请求首次涌入并且是大并发涌入的情况下,可避免系统对部分业务请求的处理超时;同时通过在执行完IO操作方法后,根据执行结果继续执行相应的撤销操作以撤销执行IO操作方法的执行结果,如此可避免Java代码预热过程对实际业务造成影响。
为便于理解,以下继续示出图3所示流程对本发明实施例提供的代码预热方法作出说明:
参见图3,为本发明一示例性实施例提供的又一种代码预热方法的实施例流程图。如图3所示,该方法可包括以下步骤:
步骤301、设置待预热方法及待预热方法的方法类型。
作为一个实施例,在应用中,可由开发人员根据实际业务需求设置待预热方法并为待预热方法设置一个类型标识,用于表示待预热方法的方法类型。
可选的,可使用Java注解的方式实现上述类型标识。
可选的,上述方法类型包括但不限于:内存计算方法、IO操作方法、HTTP调用方法、RPC调用方法等。
步骤302、设置待预热方法中请求参数对象的请求参数值。
作为一个实施例,在应用中,可由开发人员为待预热方法中的请求参数对象设置请求参数值,并将设置的请求参数值存储于指定存储介质,比如数据库或日志文件中。
步骤303、检测系统是否处于启动过程,如果是,则执行步骤304;如果否,则结束流程。
由步骤303的描述可知,本发明实施例是在系统启动过程中进行代码预热。这里所说的系统启动过程包括但不限于:系统重启、系统发布上线时的系统启动。
作为一个实施例,在应用中,系统内部可维护有一个用于标识系统是否处于启动过程中的系统标识,基于此,则可通过检测该系统标识来检测系统是否处于启动过程。比如,若系统标识为00,表示系统已关闭,若系统标识为01,表示系统正处于启动过程中,若系统标识为11,表示系统已启动。
步骤304、确定待预热方法以及待预热方法的方法类型。
由上述步骤301中的描述可知,在本步骤304中,可通过确定方法是否被设置有类型标识来确定方法是否为待预热方法。具体而言,若方法被设置有类型标识,则将方法确定为待预热方法,进一步地,还可以根据类型标识确定待预热方法的方法类型。
步骤305、获取待预热方法的请求参数对象,以及从指定存储介质中获取该待预热方法对应的请求参数值。
可选的,可使用Java反射技术获取待预热方法的请求参数对象。
步骤306、利用获取到的请求参数值对该待预热方法的请求参数对象进行赋值并执行该待预热方法;若待预热方法的方法类型为IO操作方法,则继续执行步骤307或步骤308;若待预热方法的方法类型为内存计算方法,则结束流程。
步骤307、若执行待预热方法生成了文件数据,则删除执行待预热方法而生成的文件数据。
步骤308、若执行待预热方法对数据库进行了更改,则回滚数据库事务以撤销执行所述待预热方法而对数据库进行的更改。
至于上述步骤306~步骤308的详细描述,可以参见图1、图2所示流程中的相关描述,这里不再赘述。
步骤309、检测执行待预热方法过程中是否产生异常,如果是,则执行步骤310;如果否,则返回执行步骤306。
步骤310、终止执行待预热方法,以及系统继续启动。
由步骤309中的描述可见,若在执行待预热方法的过程中产生异常,仅会终止执行待预热方法,并不会影响系统的启动。由此可见,本发明提供的代码预热方法并不会对系统启动造成影响。
需要说明的是,步骤309并非执行于步骤307或步骤308之后,而是可以与步骤306同步执行,即在执行待预热方法的过程中,同步执行步骤309。
本发明实施例提供的技术方案,通过设置待预热方法可以实现以方法为粒度进行代码预热,通过在系统启动后,也即系统运行过程中对待预热方法进行预热,可以实现当首次执行热点代码时即可执行直接编译后的机器码,提高热点代码的执行效率,尤其是在调用热点代码的业务请求首次涌入并且是大并发涌入的情况下,可避免系统对部分业务请求的处理超时;通过在执行完IO操作方法后,根据执行结果继续执行相应的撤销操作以撤销执行IO操作方法的执行结果,如此可避免Java代码预热过程对实际业务造成影响。
与上述代码预热方法的实施例相对应,本发明还提供代码预热装置的实施例。
参见图4,为本发明一示例性实施例提供的一种代码预热装置的实施例框图。如图4所示,该装置包括:确定模块41、第一执行模块42、第二执行模块43。
其中,确定模块41,用于在系统启动过程中,确定待预热方法以及所述待预热方法的方法类型;
第一执行模块42,用于执行所述待预热方法;
第二执行模块43,用于若所述待预热方法的方法类型为设定类型,则执行与所述待预热方法对应的撤销操作以撤销所述待预热方法的执行结果。
在一个可能的实施方式中,所述确定模块41具体用于:
若方法被设置有类型标识,则将所述方法确定为待预热方法,以及根据所述类型标识确定所述待预热方法的方法类型。
在一个可能的实施方式中,所述第一执行模块42具体用于:
获取所述待预热方法的请求参数对象;
从指定存储介质中获取所述待预热方法对应的请求参数值;
利用所述请求参数值对所述待预热方法的请求参数对象进行赋值并执行所述待预热方法。
在一个可能的实施方式中,所述第二执行模块43具体用于:
删除执行所述待预热方法而生成的文件数据。
在一个可能的实施方式中,还包括(图4中未示出):
事务启动模块,用于启动数据库事务;
所述第二执行模块43具体用于:
回滚所述数据库事务以撤销执行所述待预热方法而对数据库进行的更改。
图5为本发明实施例提供的一种的电子设备的结构示意图,图5所示的电子设备500包括:至少一个处理器501、存储器502、至少一个网络接口504和其他用户接口503。电子设备500中的各个组件通过总线系统505耦合在一起。可理解,总线系统505用于实现这些组件之间的连接通信。总线系统505除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为总线系统505。
其中,用户接口505可以包括显示器、键盘或者点击设备(例如,鼠标,轨迹球(trackball)、触感板或者触摸屏等。
可以理解,本发明实施例中的存储器502可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-OnlyMemory,ROM)、可编程只读存储器(ProgrammableROM,PROM)、可擦除可编程只读存储器(ErasablePROM,EPROM)、电可擦除可编程只读存储器(ElectricallyEPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(RandomAccessMemory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(StaticRAM,SRAM)、动态随机存取存储器(DynamicRAM,DRAM)、同步动态随机存取存储器(SynchronousDRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(DoubleDataRateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(SynchlinkDRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambusRAM,DRRAM)。本文描述的存储器502旨在包括但不限于这些和任意其它适合类型的存储器。
在一些实施方式中,存储器502存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统5021和应用程序5022。
其中,操作系统5021,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序5022,包含各种应用程序,例如媒体播放器(MediaPlayer)、浏览器(Browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序5022中。
在本发明实施例中,通过调用存储器502存储的程序或指令,具体的,可以是应用程序5022中存储的程序或指令,处理器501用于执行各方法实施例所提供的方法步骤,例如包括:
在系统启动过程中,确定待预热方法以及所述待预热方法的方法类型;
执行所述待预热方法;
若所述待预热方法的方法类型为设定类型,则执行与所述待预热方法对应的撤销操作以撤销所述待预热方法的执行结果。
在一个可能的实施方式中,所述确定待预热方法以及所述待预热方法的方法类型,包括:
若方法被设置有类型标识,则将所述方法确定为待预热方法,以及根据所述类型标识确定所述待预热方法的方法类型。
在一个可能的实施方式中,所述执行待预热方法,包括:
获取所述待预热方法的请求参数对象;
从指定存储介质中获取所述待预热方法对应的请求参数值;
利用所述请求参数值对所述待预热方法的请求参数对象进行赋值并执行所述待预热方法。
在一个可能的实施方式中,所述执行与所述待预热方法对应的撤销操作以撤销所述待预热方法的执行结果,包括:
删除执行所述待预热方法而生成的文件数据。
在一个可能的实施方式中,在所述执行所述待预热方法之前,还包括:
启动数据库事务;
所述执行与所述待预热方法对应的撤销操作以撤销所述待预热方法的执行结果,包括:
回滚所述数据库事务以撤销执行所述待预热方法而对数据库进行的更改。
上述本发明实施例揭示的方法可以应用于处理器501中,或者由处理器501实现。处理器501可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器501中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器501可以是通用处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecific IntegratedCircuit,ASIC)、现成可编程门阵列(FieldProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器502,处理器501读取存储器502中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecificIntegratedCircuits,ASIC)、数字信号处理器(DigitalSignalProcessing,DSP)、数字信号处理设备(DSPDevice,DSPD)、可编程逻辑设备(ProgrammableLogicDevice,PLD)、现场可编程门阵列(Field-ProgrammableGateArray,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本实施例提供的电子设备可以是如图5中所示的电子设备,可执行如图1~3中代码预热方法的所有步骤,进而实现图1~3所示代码预热方法的技术效果,具体请参照图1~3相关描述,为简洁描述,在此不作赘述。
本发明实施例还提供了一种存储介质(计算机可读存储介质)。这里的存储介质存储有一个或者多个程序。其中,存储介质可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器还可以包括上述种类的存储器的组合。
当存储介质中一个或者多个程序可被一个或者多个处理器执行,以实现上述在电子设备侧执行的代码预热方法。
所述处理器用于执行存储器中存储的代码预热程序,以实现以下在电子设备侧执行的代码预热方法的步骤:
在系统启动过程中,确定待预热方法以及所述待预热方法的方法类型;
执行所述待预热方法;
若所述待预热方法的方法类型为设定类型,则执行与所述待预热方法对应的撤销操作以撤销所述待预热方法的执行结果。
在一个可能的实施方式中,所述确定待预热方法以及所述待预热方法的方法类型,包括:
若方法被设置有类型标识,则将所述方法确定为待预热方法,以及根据所述类型标识确定所述待预热方法的方法类型。
在一个可能的实施方式中,所述执行待预热方法,包括:
获取所述待预热方法的请求参数对象;
从指定存储介质中获取所述待预热方法对应的请求参数值;
利用所述请求参数值对所述待预热方法的请求参数对象进行赋值并执行所述待预热方法。
在一个可能的实施方式中,所述执行与所述待预热方法对应的撤销操作以撤销所述待预热方法的执行结果,包括:
删除执行所述待预热方法而生成的文件数据。
在一个可能的实施方式中,在所述执行所述待预热方法之前,还包括:
启动数据库事务;
所述执行与所述待预热方法对应的撤销操作以撤销所述待预热方法的执行结果,包括:
回滚所述数据库事务以撤销执行所述待预热方法而对数据库进行的更改。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (11)

1.一种代码预热方法,其特征在于,所述方法包括:
在系统启动过程中,确定待预热方法以及所述待预热方法的方法类型;
执行所述待预热方法;
若所述待预热方法的方法类型为设定类型,则执行与所述待预热方法对应的撤销操作以撤销所述待预热方法的执行结果。
2.根据权利要求1所述的方法,其特征在于,所述确定待预热方法以及所述待预热方法的方法类型,包括:
若方法被设置有类型标识,则将所述方法确定为待预热方法,以及根据所述类型标识确定所述待预热方法的方法类型。
3.根据权利要求1所述的方法,其特征在于,所述执行待预热方法,包括:
获取所述待预热方法的请求参数对象;
从指定存储介质中获取所述待预热方法对应的请求参数值;
利用所述请求参数值对所述待预热方法的请求参数对象进行赋值并执行所述待预热方法。
4.根据权利要求1所述的方法,其特征在于,所述执行与所述待预热方法对应的撤销操作以撤销所述待预热方法的执行结果,包括:
删除执行所述待预热方法而生成的文件数据。
5.根据权利要求1所述的方法,其特征在于,在所述执行所述待预热方法之前,还包括:
启动数据库事务;
所述执行与所述待预热方法对应的撤销操作以撤销所述待预热方法的执行结果,包括:
回滚所述数据库事务以撤销执行所述待预热方法而对数据库进行的更改。
6.一种代码预热装置,其特征在于,所述装置包括:
确定模块,用于在系统启动过程中,确定待预热方法以及所述待预热方法的方法类型;
第一执行模块,用于执行所述待预热方法;
第二执行模块,用于若所述待预热方法的方法类型为设定类型,则执行与所述待预热方法对应的撤销操作以撤销所述待预热方法的执行结果。
7.根据权利要求6所述的装置,其特征在于,所述确定模块具体用于:
若方法被设置有类型标识,则将所述方法确定为待预热方法,以及根据所述类型标识确定所述待预热方法的方法类型。
8.根据权利要求6所述的装置,其特征在于,所述第二执行模块具体用于:
删除执行所述待预热方法而生成的文件数据。
9.根据权利要求6所述的装置,其特征在于,还包括:
事务启动模块,用于启动数据库事务;
所述第二执行模块具体用于:
回滚所述数据库事务以撤销执行所述待预热方法而对数据库进行的更改。
10.一种电子设备,其特征在于,包括:处理器和存储器,所述处理器用于执行所述存储器中代码预热程序,以实现权利要求1~5中任一项所述的代码预热方法。
11.一种存储介质,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1~5中任一项所述的代码预热方法。
CN202011297533.2A 2020-11-18 2020-11-18 代码预热方法、装置、电子设备及存储介质 Pending CN112394941A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011297533.2A CN112394941A (zh) 2020-11-18 2020-11-18 代码预热方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011297533.2A CN112394941A (zh) 2020-11-18 2020-11-18 代码预热方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN112394941A true CN112394941A (zh) 2021-02-23

Family

ID=74607240

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011297533.2A Pending CN112394941A (zh) 2020-11-18 2020-11-18 代码预热方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN112394941A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116016648A (zh) * 2022-12-28 2023-04-25 北京沃东天骏信息技术有限公司 一种服务预热方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105988854A (zh) * 2015-02-12 2016-10-05 龙芯中科技术有限公司 动态编译方法及装置
US20180004557A1 (en) * 2016-06-30 2018-01-04 Paypal, Inc. Forced Virtual Machine Warm-Up
CN108717374A (zh) * 2018-04-24 2018-10-30 阿里巴巴集团控股有限公司 Java虚拟机启动时预热的方法、装置、及计算机设备
CN110008284A (zh) * 2019-03-18 2019-07-12 武汉达梦数据库有限公司 基于数据页预加载及回滚的数据库数据同步方法及设备
CN110275713A (zh) * 2019-07-02 2019-09-24 四川长虹电器股份有限公司 一种Java虚拟机后端编译的改进方法
CN111475235A (zh) * 2020-04-13 2020-07-31 北京字节跳动网络技术有限公司 函数计算冷启动的加速方法、装置、设备及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105988854A (zh) * 2015-02-12 2016-10-05 龙芯中科技术有限公司 动态编译方法及装置
US20180004557A1 (en) * 2016-06-30 2018-01-04 Paypal, Inc. Forced Virtual Machine Warm-Up
CN108717374A (zh) * 2018-04-24 2018-10-30 阿里巴巴集团控股有限公司 Java虚拟机启动时预热的方法、装置、及计算机设备
CN110008284A (zh) * 2019-03-18 2019-07-12 武汉达梦数据库有限公司 基于数据页预加载及回滚的数据库数据同步方法及设备
CN110275713A (zh) * 2019-07-02 2019-09-24 四川长虹电器股份有限公司 一种Java虚拟机后端编译的改进方法
CN111475235A (zh) * 2020-04-13 2020-07-31 北京字节跳动网络技术有限公司 函数计算冷启动的加速方法、装置、设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116016648A (zh) * 2022-12-28 2023-04-25 北京沃东天骏信息技术有限公司 一种服务预热方法和装置

Similar Documents

Publication Publication Date Title
CN109766124B (zh) 业务开发方法、装置、计算机设备和存储介质
CN110471690B (zh) 动态链接库so文件的加载方法、装置及存储介质
WO2016177341A1 (zh) 接口调用方法、装置及终端
US20100017581A1 (en) Low overhead atomic memory operations
KR20060108694A (ko) 디바이스에서 특권펑션을 발생시키는 시스템
CN113885967B (zh) 一种小程序的启动方法、装置、设备及介质
US7814471B2 (en) Method and apparatus for providing DLL compatibility
CN112272218B (zh) 云平台实例资源操作方法、装置、计算机设备及存储介质
US11704139B2 (en) Service processing method and apparatus, electronic device, and storage medium
US8640117B2 (en) Software update verification apparatus, method and program
CN111625290B (zh) 一种Android平台下布局文件预加载方法、装置及电子设备
CN111930429A (zh) 一种Android操作系统快速启动的方法及电子设备
US7552434B2 (en) Method of performing kernel task upon initial execution of process at user level
CN112394941A (zh) 代码预热方法、装置、电子设备及存储介质
CN109508249B (zh) 崩溃处理方法、装置及电子设备
WO2020006911A1 (zh) 混合型应用的接口调用方法、装置及计算机可读存储介质
EP3356931B1 (en) Bios runtime verification using external device
CN110968358A (zh) 一种基于浏览器插件加载脚本模块的方法及装置
CN115292201B (zh) 函数调用栈解析和回溯方法与装置
CN110795197A (zh) 枚举类的国际化方法、装置、计算机设备及存储介质
CN115374083A (zh) 数据源的切换方法、装置、电子设备及存储介质
CN111949301A (zh) 应用程序热更新方法、装置、计算机可读存储介质和计算机设备
CN114489698A (zh) 应用程序安装方法和装置
CN110442380B (zh) 一种数据预热方法及计算设备
CN111309444A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant after: Jingdong Technology Holding Co.,Ltd.

Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant before: Jingdong Digital Technology Holding Co., Ltd