CN115437740A - 调整Zygote堆空间的方法、应用程序的运行方法及电子设备 - Google Patents
调整Zygote堆空间的方法、应用程序的运行方法及电子设备 Download PDFInfo
- Publication number
- CN115437740A CN115437740A CN202110614402.0A CN202110614402A CN115437740A CN 115437740 A CN115437740 A CN 115437740A CN 202110614402 A CN202110614402 A CN 202110614402A CN 115437740 A CN115437740 A CN 115437740A
- Authority
- CN
- China
- Prior art keywords
- zygote
- size
- application program
- heap space
- space
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 93
- 230000015654 memory Effects 0.000 claims description 98
- 230000002159 abnormal effect Effects 0.000 claims description 50
- 230000008569 process Effects 0.000 description 10
- 238000004590 computer program Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000012447 hatching Effects 0.000 description 1
- 238000011534 incubation Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例涉及计算机技术领域,公开了一种调整Zygote堆空间的方法、装置、基于Android的应用程序的运行方法及电子设备,该方法能够获取待运行的应用程序所需要的Zygote堆空间的大小,然后根据所述应用程序所需要的Zygote堆空间的大小调整当前Zygote堆空间的大小,从而使得Zygote堆空间能够匹配所需要运行的应用程序的大小,避免出现Zygote堆空间过大导致虚拟内存的资源存在浪费的现象,或者Zygote堆空间过小导致应用程序无法正常运行的情况,智能化满足应用程序对Zygote堆空间的需求。
Description
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种调整Zygote堆空间的方法、装置、基于Android的应用程序的运行方法及电子设备。
背景技术
在Android中,Zygote(孵化)是整个系统创建新进程的核心进程,是应用的最初来源,所有应用皆来自Zygote的fork,也即是process的复制,Zygote进程在内部会先启动Dalvik虚拟机,继而加载一些必要的系统资源和系统类,最后进入一种监听状态。
在实现本申请实施例过程中,发明人发现以上相关技术中至少存在如下问题:一般情况下,应用程序需要运行时,Android中的java程序会使用到ZygoteHeap(孵化堆空间),目前,该区块的大小通常是预先设置好的,然而,对于不同的应用程序,所需要的Zygote堆空间的大小并不相同,Zygote堆空间过大会导致虚拟内存地址的浪费,过小则会导致程序无法运行,都会导致系统所能运行的程序收到较多限制。
发明内容
本申请实施例提供了一种调整Zygote堆空间的方法、装置、基于Android的应用程序的运行方法及电子设备。
本申请实施例的目的是通过如下技术方案实现的:
为解决上述技术问题,第一方面,本申请实施例中提供了一种调整Zygote堆空间的方法,包括:
获取待运行的应用程序所需要的Zygote堆空间的大小;
根据所述应用程序所需要的Zygote堆空间的大小调整当前Zygote堆空间的大小。
在一些实施例中,所述根据所述应用程序所需要的Zygote堆空间的大小调整当前Zygote堆空间的大小,进一步包括:
判断当前Zygote堆空间的大小是否与所述应用程序所需要的Zygote堆空间的大小相符合;
若否,根据所述应用程序所需要的Zygote堆空间的大小调整虚拟内存中分配至Zygote堆空间的虚拟内存地址。
在一些实施例中,所述判断当前Zygote堆空间的大小是否与所述应用程序所需要的Zygote堆空间的大小相符合,进一步包括:
初步运行所述应用程序并判断是否出现开放式图形库内存溢出错误的异常现象;
若是,则确定相对于所述应用程序所需要的Zygote堆空间的大小,当前Zygote堆空间的大小较大。
在一些实施例中,所述判断当前Zygote堆空间的大小是否与所述应用程序所需要的Zygote堆空间的大小相符合,进一步包括:
初步运行所述应用程序并判断是否出现堆空间内存溢出错误的异常现象;
若是,则确定相对于所述应用程序所需要的Zygote堆空间的大小,当前Zygote堆空间的大小较小。
在一些实施例中,在所述判断当前Zygote堆空间的大小是否与所述应用程序所需要的Zygote堆空间的大小相符合之前,所述方法还包括:
设置所述当前Zygote堆空间的初始值大小,以用于初步运行所述应用程序。
在一些实施例中,所述方法还包括:
在出现所述异常现象后,记录并保存所述异常现象的错误数据、所述Zygote堆空间的大小、以及所述应用程序的名称。
在一些实施例中,在所述根据所述应用程序所需要的Zygote堆空间的大小调整当前Zygote堆空间的大小之前,所述方法还包括:
判断是否存在所述待运行的应用程序的记录;
若是,获取所述应用程序出现过所述异常现象的次数,并判断所述次数是否超过阈值;
若是,调整所述当前Zygote堆空间的大小。
在一些实施例中,所述获取所述应用程序出现过所述异常现象的次数,并判断所述次数是否超过阈值,进一步包括:
获取所述应用程序出现过开放式图形库内存溢出错误的异常现象的次数;
判断出现过开放式图形库内存溢出错误的异常现象的次数是否大于第一阈值;
若是,所述调整所述当前Zygote堆空间的大小,进一步包括:
减少所述虚拟内存中分配至Zygote堆空间的虚拟内存地址,以缩小所述当前Zygote堆空间的大小。
在一些实施例中,所述获取所述应用程序出现过所述异常现象的次数,并判断所述次数是否超过阈值,进一步包括:
获取所述应用程序出现过堆空间内存溢出错误的异常现象的次数;
判断出现过堆空间内存溢出错误的异常现象的次数是否大于第二阈值;
若是,所述调整所述当前Zygote堆空间的大小,进一步包括:
增加所述虚拟内存中分配至Zygote堆空间的虚拟内存地址,以增大所述当前Zygote堆空间的大小。
为解决上述技术问题,第二方面,本申请实施例中提供了一种基于Android的应用程序的运行方法,包括:
通过如第一方面所述的调整Zygote堆空间的方法调整Zygote堆空间的大小;
通过调整后的Zygote预加载应用程序的资源,以启动所述应用程序。
为解决上述技术问题,第三方面,本申请实施例提供了一种调整Zygote堆空间的装置,包括:
获取模块,用于获取待运行的应用程序所需要的Zygote堆空间的大小;
调整模块,用于根据所述应用程序所需要的Zygote堆空间的大小调整当前Zygote堆空间的大小。
为解决上述技术问题,第四方面,本申请实施例提供了一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上第一方面所述的方法。
为解决上述技术问题,第五方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如上第一方面所述的方法。
为解决上述技术问题,第六方面,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行如上第一方面所述的方法。
与现有技术相比,本申请的有益效果是:区别于现有技术的情况,本申请实施例中提供了一种调整Zygote堆空间的方法、装置、基于Android的应用程序的运行方法及电子设备,该方法能够获取待运行的应用程序所需要的Zygote堆空间的大小,然后根据所述应用程序所需要的Zygote堆空间的大小调整当前Zygote堆空间的大小,从而使得Zygote堆空间能够匹配所需要运行的应用程序的大小,避免出现Zygote堆空间过大导致虚拟内存的资源存在浪费的现象,或者Zygote堆空间过小导致应用程序无法正常运行的情况,智能化满足应用程序对Zygote堆空间的需求。
附图说明
一个或多个实施例中通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件/模块和步骤表示为类似的元件/模块和步骤,除非有特别申明,附图中的图不构成比例限制。
图1是本申请实施例提供的调整Zygote堆空间的方法的其中一种应用环境的示意图;
图2是本申请实施例一提供的一种调整Zygote堆空间的方法的流程示意图;
图3是图2所示步骤120的一子流程示意图;
图4是图3所示步骤121的一子流程示意图;
图5是图3所示步骤121的另一子流程示意图;
图6是图2所示步骤120的另一子流程示意图;
图7是本申请实施例一提供的另一种调整Zygote堆空间的方法的流程示意图;
图8是图7所示调整Zygote堆空间的方法的一具体流程示意图;
图9是图7所示调整Zygote堆空间的方法的另一具体流程示意图;
图10是本申请实施例二提供的一种基于Android的应用程序的运行方法的流程示意图;
图11是本申请实施例三提供的一种调整Zygote堆空间的装置的结构示意图;
图12是本申请实施例三提供的另一种调整Zygote堆空间的装置的结构示意图;
图13是本申请实施例四提供的一种电子设备的结构示意图。
具体实施方式
下面结合具体实施例对本申请进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本申请,但不以任何形式限制本申请。应当指出的是,对本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进。这些都属于本申请的保护范围。
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,如果不冲突,本申请实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。此外,本文所采用的“第一”、“第二”等字样并不对数据和执行次序进行限定,仅是对功能和作用基本相同的相同项或相似项进行区分。
除非另有定义,本说明书所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本说明书中在本申请的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是用于限制本申请。本说明书所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
此外,下面所描述的本申请各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
为了解决目前Zygote堆空间无法依据应用程序的实际需求进行调整的问题,本申请实施例提供了一种调整Zygote堆空间的方法、装置、基于Android的应用程序的运行方法及电子设备,图1为本申请实施例提供的调整Zygote堆空间的方法的其中一种应用环境的示意图,其中,该应用环境中包括:电子设备10。
所述电子设备10可以是移动终端、电子计算机、平板电脑等电子设备,所述电子设备10可以是搭载Android、Linux、Windows、iOS等操作系统(Disk Operating System,简称DOS)的电子设备,优选地,在本应用场景中,所述电子设备10为搭载Android系统的电子设备。
具体地,下面结合附图,对本申请实施例作进一步阐述。
实施例一
本申请实施例提供了一种调整Zygote堆空间的方法,该方法能够应用在上述引用场景所述的电子设备10中,请参见图2,其示出了本申请实施例提供的一种调整Zygote堆空间的方法的流程,所述方法包括但不限于以下步骤:
步骤110:获取待运行的应用程序所需要的Zygote堆空间的大小;
在本申请实施例中,所述待运行的应用程序为需要通过Zygote加载进程、调取资源后实现启动和运行的应用程序,其可以是设备中任何需要通过Zygote运行的应用程序,具体地,可以是执行拍摄的应用程序、执行计算功能的应用程序、执行播放功能的应用程序等,具体可根据实际需要进行设置。在本申请实施例中,由于需要确定当前所需要运行的应用程序的其运行时所会占用的Zygote堆空间的空间大小,因此,首先需要获取应用程序所需要的Zygote堆空间的大小,也即是本身所述应用程序运行时的缓存包的数据大小。
步骤120:根据所述应用程序所需要的Zygote堆空间的大小调整当前Zygote堆空间的大小。
在获取到所述应用程序所需要的Zygote堆空间的大小后,进一步地,根据该值对当前Zygote堆空间的大小进行调整,从而使得调整后的Zygote堆空间的空间大小与应用程序所需要的空间大小相匹配,避免空间过大对虚拟内存的空间产生浪费,或者空间过小导致应用程序无法正常运行的情况。
进一步地,请参见图3,其示出了上述步骤120的一子流程,所述根据所述应用程序所需要的Zygote堆空间的大小调整当前Zygote堆空间的大小,进一步包括:
步骤121:判断当前Zygote堆空间的大小是否与所述应用程序所需要的Zygote堆空间的大小相符合;
若是,则说明当前应用程序通过当前的Zygote堆空间运行时,不会对虚拟内存地址空间产生浪费,也不会出现应用程序出现无法运行的情况,此时,进一步地,直接运行所述应用程序即可;若否,则跳转至步骤122;
具体地,一方面,请参见图4,其示出了上述步骤121的一子流程,所述判断当前Zygote堆空间的大小是否与所述应用程序所需要的Zygote堆空间的大小相符合,进一步包括:
步骤1211a:初步运行所述应用程序并判断是否出现开放式图形库内存溢出错误的异常现象;若是,则跳转至步骤1212a;
步骤1212a:确定相对于所述应用程序所需要的Zygote堆空间的大小,当前Zygote堆空间的大小较大。
在本申请实施例中,可以通过按照系统默认设置的或者当前系统所设置的Zygote堆空间的大小来初步运行所述应用程序,以确定当前Zygote堆空间的大小是否与所述应用程序所需要的Zygote堆空间的大小相符合,当Zygote堆空间的空间过大的时候,系统会输出开放式图形库(OpenGL)内存溢出(Out of Memory,OOM)指令,其表示GPU driver因无法取得足够内存而产生的错误,也即是出现了内存溢出的现象,说明当前浪费了过多的虚拟内存地址,需要相应调整所述Zygote堆空间的大小。
具体地,另一方面,请参见图5,其示出了上述步骤121的另一子流程,所述判断当前Zygote堆空间的大小是否与所述应用程序所需要的Zygote堆空间的大小相符合,进一步包括:
步骤1211b:初步运行所述应用程序并判断是否出现堆空间内存溢出错误的异常现象;若是,则跳转至步骤1212b;
步骤1212b:确定相对于所述应用程序所需要的Zygote堆空间的大小,当前Zygote堆空间的大小较小。
在本申请实施例中,可以通过按照系统默认设置的或者当前系统所设置的Zygote堆空间的大小来初步运行所述应用程序,以确定当前Zygote堆空间的大小是否与所述应用程序所需要的Zygote堆空间的大小相符合,当Zygote堆空间的空间过小的时候,系统会输出堆空间(heap)内存溢出(Out of Memory,OOM)指令,其表示Java程序因无法取得足够内存而产生的错误,也即是出现了内存不足的现象,需要相应调整所述Zygote堆空间的大小。
步骤122:根据所述应用程序所需要的Zygote堆空间的大小调整虚拟内存中分配至Zygote堆空间的虚拟内存地址。
在确定所述Zygote堆空间的大小需要调整后,相应的,根据获取到的所述应用程序所需要的Zygote堆空间的实际大小来调整具体虚拟内存中,分配至Zygote堆空间的虚拟内存地址,通过增加虚拟内存地址或者减少虚拟内存地址的方式实现对Zygote堆空间的大小的调整。
进一步地,请参见图6,其示出了上述步骤120的另一子流程,在所述步骤1211(步骤1211a和/或步骤11b)之前,所述方法还包括:
步骤123:设置所述当前Zygote堆空间的初始值大小,以用于初步运行所述应用程序。
在本申请实施例中,在所述判断当前Zygote堆空间的大小是否与所述应用程序所需要的Zygote堆空间的大小相符合之前,还需要先设置好当前Zygote堆空间的初始值大小,该初始值可以是由系统开发商预先设置好的,也可以是用户预先自定义设置好的。优选地,其可以是系统开发商在出厂设置中默认设置好的,后续通过系统版本更新或者补丁的方式进行在线或者离线更新,例如,可以是256MB/384MB/512MB等等大小,具体地,可根据实际需要进行设置,不需要拘泥于本申请实施例的限定。
进一步地,请继续参见图6,其示出了上述步骤120的另一子流程,在所述步骤1211(步骤1211a和/或步骤11b)之后,所述方法还包括:
步骤124:在出现所述异常现象后,记录并保存所述异常现象的错误数据、所述Zygote堆空间的大小、以及所述应用程序的名称。
在本申请实施例中,进一步地,在确定出现如上述开放式图形库内存溢出错误和/或堆空间内存溢出错误等异常现象后,还可以对这些异常现象的相关数据进行保存,在下次运行同一应用程序时可以调用该异常现象的相关数据并对Zygote堆空间进行调整,从而更快地为所需要运行的应用程序匹配到相应的空间大小。具体地,所述异常现象的相关数据包括但不限于:所需要运行的应用程序的名称,当前Zygote堆空间的大小,异常现象的错误名称或指令名称等,该相关数据可根据实际需要进行设置,不需要拘泥于本申请实施例的限定。
进一步地,请参见图7,其示出了本申请实施例提供的另一种调整Zygote堆空间的方法的流程,在所述步骤120之前,所述方法还包括:
步骤130:判断是否存在所述待运行的应用程序的记录;若是,跳转至步骤140:
步骤140:获取所述应用程序出现过所述异常现象的次数,并判断所述次数是否超过阈值;若是,跳转至步骤120;
在本申请实施例中,在确定需要调整当前Zygote堆空间的大小,在对Zygote堆空间的大小进行调整之前,还需要判断是否存在所述待运行的应用程序的记录,若是,则说明之前已经运行过该应用程序了,此时,需要调取该记录并确定其中异常现象的次数;若该次数较少,则说明该应用程序每次运行完之后数据包大小变化不大,之前通过当前Zygote堆空间的大小运行时基本没有出现过问题,可以直接通过Zygote进程启动并运行应用程序;若出现异常现象的次数较多,则说明该应用程序可能每次运行后其数据包大小变化可能较大,每次运行时都需要对Zygote堆空间的大小进行调整,则调整所述当前Zygote堆空间的大小。所述阈值可根据实际需要进行设置,例如,可以根据应用程序的使用频率、习惯、该应用程序的类别进行设置,例如,当该应用程序的使用频率较高、且该应用程序属于每次运行后缓存数据变化较大的情况时,可将该次数阈值设置的较高一些,如五次、十次等,具体地,可根据实际需要进行设置,不需要拘泥于本申请实施例的限定。
具体地,一方面,请参见图8,其示出了图7所示方法的一具体流程,所述方法具体地,进一步包括:
步骤141a:获取所述应用程序出现过开放式图形库内存溢出错误的异常现象的次数;
步骤142a:判断出现过开放式图形库内存溢出错误的异常现象的次数是否大于第一阈值;
若是,所述步骤120进一步包括:
步骤120a:减少所述虚拟内存中分配至Zygote堆空间的虚拟内存地址,以缩小所述当前Zygote堆空间的大小。
在本申请实施例中,所述获取所述应用程序出现过所述异常现象的次数,并判断所述次数是否超过阈值,进一步地,需要判断内存溢出的异常现象出现的次数是否大于一定的阈值,即第一阈值,所述第一阈值的设置可根据实际需要进行设置。若是,则说明该应用程序经常出现运行后出现浪费过多虚拟内存地址的情况,此时,需要调整所述当前Zygote堆空间的大小,减少所述虚拟内存中分配至Zygote堆空间的虚拟内存地址,以缩小所述当前Zygote堆空间的大小。
具体地,另一方面,请参见图9,其示出了图7所示方法的另一具体流程,所述方法具体地,进一步包括:
步骤141b:获取所述应用程序出现过堆空间内存溢出错误的异常现象的次数;
步骤142b:判断出现过堆空间内存溢出错误的异常现象的次数是否大于第二阈值;若是,
步骤120b:增加所述虚拟内存中分配至Zygote堆空间的虚拟内存地址,以增大所述当前Zygote堆空间的大小。
在本申请实施例中,所述获取所述应用程序出现过所述异常现象的次数,并判断所述次数是否超过阈值,进一步地,需要判断内存不足的异常现象出现的次数是否大于一定的阈值,即第二阈值,所述第二阈值的设置可根据实际需要进行设置。若是,则说明该应用程序经常出现运行后内存不足应用程序无法运行或者无法正常运行的情况,此时,需要调整所述当前Zygote堆空间的大小,增加所述虚拟内存中分配至Zygote堆空间的虚拟内存地址,以增大所述当前Zygote堆空间的大小。
实施例二
本申请实施例提供了一种基于Android的应用程序的运行方法,请参见图10,其示出了本申请实施例提供的一种基于Android的应用程序的运行方法的流程,所述方法包括但不限于以下步骤:
步骤210:通过如实施例一所述的调整Zygote堆空间的方法调整Zygote堆空间的大小;
步骤220:通过调整后的Zygote预加载应用程序的资源,以启动所述应用程序。
在本申请实施例中,以Android作为电子设备的操作系统为例,通过Zygote进程来运行应用程序,具体地,启动并运行所述应用程序之前,可以先通过如上述实施例一及附图2至9所示方法来调整Zygote堆空间的大小,使其符合所要运行的应用程序对Zygote堆空间的大小需求,具体地,所述调整Zygote堆空间的方法请参见上述实施例一及其附图所示,本申请实施例不再详述。需要说明的是,本申请实施例提供的基于Android的应用程序的运行方法也可以应用在如上述应用场景所示的电子设备10中,此处不再详述。
实施例三
本申请实施例提供了一种调整Zygote堆空间的装置,请参见图11,其示出了本申请实施例提供的一种调整Zygote堆空间的装置的结构,所述调整Zygote堆空间的装置300包括:获取模块310和调整模块320
所述获取模块310,用于获取待运行的应用程序所需要的Zygote堆空间的大小;
所述调整模块320,用于根据所述应用程序所需要的Zygote堆空间的大小调整当前Zygote堆空间的大小。
进一步地,所述调整模块320还用于判断当前Zygote堆空间的大小是否与所述应用程序所需要的Zygote堆空间的大小相符合;
若否,根据所述应用程序所需要的Zygote堆空间的大小调整虚拟内存中分配至Zygote堆空间的虚拟内存地址。
进一步地,所述调整模块320还用于初步运行所述应用程序并判断是否出现开放式图形库内存溢出错误的异常现象;
若是,则确定相对于所述应用程序所需要的Zygote堆空间的大小,当前Zygote堆空间的大小较大。
进一步地,所述调整模块320还用于初步运行所述应用程序并判断是否出现堆内存溢出错误的异常现象;
若是,则确定相对于所述应用程序所需要的Zygote堆空间的大小,当前Zygote堆空间的大小较小。
进一步地,请参见图12,其示出了本申请实施例提供的一种调整Zygote堆空间的装置的结构,所述调整Zygote堆空间的装置300还包括:设置模块330,用于设置所述当前Zygote堆空间的初始值大小,以用于初步运行所述应用程序。
进一步地,请继续参见图12,所述调整Zygote堆空间的装置300还包括:记录模块340,用于在出现所述异常现象后,记录并保存所述异常现象的错误数据、所述Zygote堆空间的大小、以及所述应用程序的名称。
进一步地,请继续参见图12,所述调整Zygote堆空间的装置300还包括:判断模块350,用于判断是否存在所述待运行的应用程序的记录;
若是,获取所述应用程序出现过所述异常现象的次数,并判断所述次数是否超过阈值;
若是,调整所述当前Zygote堆空间的大小。
进一步地,所述判断模块350还用于获取所述应用程序出现过开放式图形库内存溢出错误的异常现象的次数;
判断出现过开放式图形库内存溢出错误的异常现象的次数是否大于第一阈值;
若是,所述调整模块320还用于减少所述虚拟内存中分配至Zygote堆空间的虚拟内存地址,以缩小所述当前Zygote堆空间的大小。
进一步地,所述判断模块350还用于获取所述应用程序出现过堆空间内存溢出错误的异常现象的次数;
判断出现过堆空间内存溢出错误的异常现象的次数是否大于第二阈值;
若是,所述调整模块320还用于增加所述虚拟内存中分配至Zygote堆空间的虚拟内存地址,以增大所述当前Zygote堆空间的大小。
实施例四
本申请实施例还提供了一种电子设备,请参见图13,其示出了能够执行图2至图9所述调整Zygote堆空间的方法的电子设备的硬件结构。所述电子设备10可以是图1所示的电子设备10。
所述电子设备10包括:至少一个处理器11;以及,与所述至少一个处理器11通信连接的存储器12,图13中以一个处理器11为例。所述存储器12存储有可被所述至少一个处理器11执行的指令,所述指令被所述至少一个处理器11执行,以使所述至少一个处理器11能够执行上述图2至图9所述的调整Zygote堆空间的方法。所述处理器11和所述存储器12可以通过总线或者其他方式连接,图13中以通过总线连接为例。
存储器12作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的调整Zygote堆空间的方法对应的程序指令/模块,例如,图11至图12所示的各个模块。处理器11通过运行存储在存储器12中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例调整Zygote堆空间的方法。
存储器12可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据调整Zygote堆空间的装置的使用所创建的数据等。此外,存储器12可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器12可选包括相对于处理器11远程设置的存储器,这些远程存储器可以通过网络连接至调整Zygote堆空间的装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述一个或者多个模块存储在所述存储器12中,当被所述一个或者多个处理器11执行时,执行上述任意方法实施例中的调整Zygote堆空间的方法,例如,执行以上描述的图2至图9的方法步骤,实现图11至图12中的各模块和各单元的功能。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
本申请实施例还提供了一种非易失性计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如,执行以上描述的图2至图9的方法步骤,实现图11至图12中的各模块的功能。
本申请实施例还提供了一种计算机程序产品,包括存储在非易失性计算机可读存储介质上的计算程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时时,使所述计算机执行上述任意方法实施例中的调整Zygote堆空间的方法,例如,执行以上描述的图2至图9的方法步骤,实现图11至图12中的各模块的功能。
本申请实施例中提供了一种调整Zygote堆空间的方法、装置、基于Android的应用程序的运行方法及电子设备,该方法能够获取待运行的应用程序所需要的Zygote堆空间的大小,然后根据所述应用程序所需要的Zygote堆空间的大小调整当前Zygote堆空间的大小,从而使得Zygote堆空间能够匹配所需要运行的应用程序的大小,避免出现Zygote堆空间过大导致虚拟内存的资源存在浪费的现象,或者Zygote堆空间过小导致应用程序无法正常运行的情况,智能化满足应用程序对Zygote堆空间的需求。
本申请实施例可以使得内存资源配置较少或配置内存容量较低的电子装置得以充分运用内存资源,减少应用程序因内存溢出而无法正常运行的情况。由于内存资源可以获得充分运用,进一步减少内存回收的次数,降低应用程序运行时需要先等待内存回收的时间,对应用程序顺畅性产生优化效果。
需要说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (13)
1.一种调整Zygote堆空间的方法,其特征在于,包括:
获取待运行的应用程序所需要的Zygote堆空间的大小;
根据所述应用程序所需要的Zygote堆空间的大小调整当前Zygote堆空间的大小。
2.根据权利要求1所述的调整Zygote堆空间的方法,其特征在于,
所述根据所述应用程序所需要的Zygote堆空间的大小调整当前Zygote堆空间的大小,进一步包括:
判断当前Zygote堆空间的大小是否与所述应用程序所需要的Zygote堆空间的大小相符合;
若否,根据所述应用程序所需要的Zygote堆空间的大小调整虚拟内存中分配至Zygote堆空间的虚拟内存地址。
3.根据权利要求2所述的调整Zygote堆空间的方法,其特征在于,
所述判断当前Zygote堆空间的大小是否与所述应用程序所需要的Zygote堆空间的大小相符合,进一步包括:
初步运行所述应用程序并判断是否出现开放式图形库内存溢出错误的异常现象;
若是,则确定相对于所述应用程序所需要的Zygote堆空间的大小,当前Zygote堆空间的大小较大。
4.根据权利要求2所述的调整Zygote堆空间的方法,其特征在于,
所述判断当前Zygote堆空间的大小是否与所述应用程序所需要的Zygote堆空间的大小相符合,进一步包括:
初步运行所述应用程序并判断是否出现堆空间内存溢出错误的异常现象;
若是,则确定相对于所述应用程序所需要的Zygote堆空间的大小,当前Zygote堆空间的大小较小。
5.根据权利要求3或4任一项所述的调整Zygote堆空间的方法,其特征在于,
在所述判断当前Zygote堆空间的大小是否与所述应用程序所需要的Zygote堆空间的大小相符合之前,所述方法还包括:
设置所述当前Zygote堆空间的初始值大小,以用于初步运行所述应用程序。
6.根据权利要求3或4任一项所述的调整Zygote堆空间的方法,其特征在于,所述方法还包括:
在出现所述异常现象后,记录并保存所述异常现象的错误数据、所述Zygote堆空间的大小、以及所述应用程序的名称。
7.根据权利要求6所述的调整Zygote堆空间的方法,其特征在于,
在所述根据所述应用程序所需要的Zygote堆空间的大小调整当前Zygote堆空间的大小之前,所述方法还包括:
判断是否存在所述待运行的应用程序的记录;
若是,获取所述应用程序出现过所述异常现象的次数,并判断所述次数是否超过阈值;
若是,调整所述当前Zygote堆空间的大小。
8.根据权利要求7所述的调整Zygote堆空间的方法,其特征在于,
所述获取所述应用程序出现过所述异常现象的次数,并判断所述次数是否超过阈值,进一步包括:
获取所述应用程序出现过开放式图形库内存溢出错误的异常现象的次数;
判断出现过开放式图形库内存溢出错误的异常现象的次数是否大于第一阈值;
若是,所述调整所述当前Zygote堆空间的大小,进一步包括:
减少所述虚拟内存中分配至Zygote堆空间的虚拟内存地址,以缩小所述当前Zygote堆空间的大小。
9.根据权利要求7所述的调整Zygote堆空间的方法,其特征在于,
所述获取所述应用程序出现过所述异常现象的次数,并判断所述次数是否超过阈值,进一步包括:
获取所述应用程序出现过堆空间内存溢出错误的异常现象的次数;
判断出现过堆空间内存溢出错误的异常现象的次数是否大于第二阈值;
若是,所述调整所述当前Zygote堆空间的大小,进一步包括:
增加所述虚拟内存中分配至Zygote堆空间的虚拟内存地址,以增大所述当前Zygote堆空间的大小。
10.一种基于Android的应用程序的运行方法,其特征在于,包括:
通过如权利要求1-9任一项所述的调整Zygote堆空间的方法调整Zygote堆空间的大小;
通过调整后的Zygote预加载应用程序的资源,以启动所述应用程序。
11.一种调整Zygote堆空间的装置,其特征在于,包括:
获取模块,用于获取待运行的应用程序所需要的Zygote堆空间的大小;
调整模块,用于根据所述应用程序所需要的Zygote堆空间的大小调整当前Zygote堆空间的大小。
12.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-9任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1-9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110614402.0A CN115437740A (zh) | 2021-06-02 | 2021-06-02 | 调整Zygote堆空间的方法、应用程序的运行方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110614402.0A CN115437740A (zh) | 2021-06-02 | 2021-06-02 | 调整Zygote堆空间的方法、应用程序的运行方法及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115437740A true CN115437740A (zh) | 2022-12-06 |
Family
ID=84240574
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110614402.0A Pending CN115437740A (zh) | 2021-06-02 | 2021-06-02 | 调整Zygote堆空间的方法、应用程序的运行方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115437740A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112194A (zh) * | 2023-04-23 | 2023-11-24 | 荣耀终端有限公司 | 一种内存扩展方法及相关设备 |
-
2021
- 2021-06-02 CN CN202110614402.0A patent/CN115437740A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112194A (zh) * | 2023-04-23 | 2023-11-24 | 荣耀终端有限公司 | 一种内存扩展方法及相关设备 |
CN117112194B (zh) * | 2023-04-23 | 2024-07-09 | 荣耀终端有限公司 | 一种内存扩展方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9875118B2 (en) | Method and embedded device for loading driver | |
US10261918B2 (en) | Process running method and apparatus | |
CN104932933A (zh) | 一种获取自旋锁的方法及装置 | |
CN112068896A (zh) | Dts修改的方法、装置及计算机可读存储介质 | |
CN112882694A (zh) | 一种程序编译方法、装置、电子设备及可读存储介质 | |
CN114090171A (zh) | 虚拟机创建方法、迁移方法及计算机可读介质 | |
CA3129982A1 (en) | Method and system for accessing distributed block storage system in kernel mode | |
CN115033337A (zh) | 虚拟机内存迁移方法、装置、设备及存储介质 | |
CN115437740A (zh) | 调整Zygote堆空间的方法、应用程序的运行方法及电子设备 | |
CN115794317A (zh) | 一种基于虚拟机的处理方法、装置、设备及介质 | |
CN108874422B (zh) | 一种冰箱电控板的软件在线升级方法、冰箱电控板和冰箱 | |
CN114253619A (zh) | SSD多级Boot的方法、装置、计算机设备及存储介质 | |
US9223697B2 (en) | Computer reprogramming method, data storage medium and motor vehicle computer | |
EP3540598A1 (en) | Method, device and server for checking a defective function | |
US20210389994A1 (en) | Automated performance tuning using workload profiling in a distributed computing environment | |
CN112860595B (zh) | Pci设备或pcie设备、数据存取方法及相关组件 | |
CN109144708B (zh) | 电子计算装置及调整一内存回收函数的触发机制的方法 | |
CN110716923B (zh) | 数据处理方法、装置、节点设备及存储介质 | |
EP3936977A1 (en) | Application program management method and apparatus, and storage medium | |
US20230236819A1 (en) | Application status reporting via platform binary tables | |
CN107273188B (zh) | 一种虚拟机中央处理单元cpu绑定方法及装置 | |
KR20070006517A (ko) | 이동통신단말기 및 그 부팅방법 | |
CN111459570B (zh) | Pdf插件加载方法、电子设备和计算机存储介质 | |
US20240086225A1 (en) | Container group scheduling methods and apparatuses | |
US20090158267A1 (en) | System and method for inserting authorized code into a program |
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 |