CN107678780B - 一种内存管理方法、装置、存储介质及终端设备 - Google Patents

一种内存管理方法、装置、存储介质及终端设备 Download PDF

Info

Publication number
CN107678780B
CN107678780B CN201711019767.9A CN201711019767A CN107678780B CN 107678780 B CN107678780 B CN 107678780B CN 201711019767 A CN201711019767 A CN 201711019767A CN 107678780 B CN107678780 B CN 107678780B
Authority
CN
China
Prior art keywords
view
stack
page data
memory
pushed
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.)
Active
Application number
CN201711019767.9A
Other languages
English (en)
Other versions
CN107678780A (zh
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.)
Shenzhen Lexin Software Technology Co Ltd
Original Assignee
Shenzhen Lexin Software 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 Shenzhen Lexin Software Technology Co Ltd filed Critical Shenzhen Lexin Software Technology Co Ltd
Priority to CN201711019767.9A priority Critical patent/CN107678780B/zh
Publication of CN107678780A publication Critical patent/CN107678780A/zh
Application granted granted Critical
Publication of CN107678780B publication Critical patent/CN107678780B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • 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/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/5022Mechanisms to release resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种内存管理方法、装置、存储介质及终端设备。该方法包括:根据用户访问页面的操作请求,获取待入栈视图;在导航管理堆栈中识别是否存在与所述待入栈视图一致的视图,当导航管理堆栈中存在与所述待入栈视图一致的视图时,则将与所述待入栈视图一致的视图的页面数据,从内存管理对象中复制到内存缓存管理对象中,并将与所述待入栈视图一致的视图的页面数据从内存管理对象中清除;将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。通过采用本申请实施例所提供的技术方案,可以实现优化内存管理的效果。

Description

一种内存管理方法、装置、存储介质及终端设备
技术领域
本申请实施例涉及计算机数据存储技术领域,尤其涉及一种内存管理方法、装置、存储介质及终端设备。
背景技术
现有技术中,应用软件(Application,APP)的客户端会为用户提供界面访问功能,通常可以通过点击界面内的页面链接,而连续访问多级页面,且在点击返回按键时,逐级返回各级界面。
当打开新页面时,通常会产生页面视图及其标识,视图的标识存储到导航管理堆栈中,以记录页面打开顺序,便于根据页面的返回操作而返回上一级页面。页面视图的脚本数据,会存储到内存管理对象的空间中,用于渲染生成页面供显示。内存管理对象存储的页面数据顺序与导航管理堆栈中存储的视图标识顺序一般是对应的。
但是,当用户在客户端中不停打开新页面连续访问时,由于每个页面为一个视图,当视图深度超过20级时,视图所对应页面数据的连续堆叠会造成内存开销过大,从而导致客户端出现卡死甚至崩溃闪退等情况,导致用户无法进行操作甚至被迫退出客户端。
为了规避此现象的出现,操作系统的内存管理机制会对内存管理对象中的页面数据有选择的进行销毁,从而控制页面数据的堆叠总数,保证客户端不会因为内存暴增导致卡死或者闪退。
然而,当用户进行返回操作时,由于已访问过的视图的页面数据从内存管理对象中被有选择的销毁,无法完整还原已访问链路,有损用户体验。
发明内容
本申请实施例提供一种内存管理方法、装置、存储介质及终端设备,可以实现优化内存管理的效果。
第一方面,本申请实施例提供了一种内存管理方法,该方法包括:
根据用户访问页面的操作请求,获取待入栈视图;
在导航管理堆栈中识别是否存在与所述待入栈视图一致的视图,当导航管理堆栈中存在与所述待入栈视图一致的视图时,则将与所述待入栈视图一致的视图的页面数据,从内存管理对象中复制到内存缓存管理对象中,并将与所述待入栈视图一致的视图的页面数据从内存管理对象中清除;
将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
进一步的,在导航管理堆栈中识别是否存在与所述待入栈视图一致的视图包括:
在导航管理堆栈中的次栈顶至栈底中,识别是否存在与所述待入栈视图一致的视图。
进一步的,所述方法还包括:
根据所述待入栈视图中的页面属性,识别是否为可复用视图;
若否,将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
进一步的,所述将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,包括:
从所述内存缓存管理对象中,复制与所述待入栈视图一致的视图的页面数据,作为待入栈视图的页面数据;
将所述页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
进一步的,将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,包括:
将所述待入栈视图的页面数据存储至中间导航管理堆栈的栈顶;
将所述中间导航管理堆栈的数据同步到操作系统级导航管理堆栈。
进一步的,所述方法包括:
当获取到用户的页面的返回操作时,将导航管理堆栈的栈顶的视图确定为待出栈视图;
当所述导航管理堆栈中存在与所述待出栈视图一致的视图时,则将与所述待出栈视图的页面数据从所述内存管理对象的栈顶清除;
将所述待出栈视图推出所述导航管理堆栈。
进一步的,在当所述导航管理堆栈中存在与所述待出栈视图一致的视图时,则将与所述待出栈视图的页面数据从所述内存管理对象的栈顶清除之前,还包括:
当导航管理堆栈的次栈顶的视图为可复用视图时,判断与所述次栈顶的视图对应的所述内存管理对象的次栈顶内存是否为空;
若是,从所述内存缓存管理对象中复制所述次栈顶的视图的页面数据至所述内存管理对象的栈顶。
进一步的,所述方法还包括:
当所述导航管理堆栈中不存在与所述待出栈视图一致的视图时,则将与所述待出栈视图的页面数据从所述内存管理对象的栈顶清除,并将与所述待出栈视图的页面数据从所述内存缓存管理对象中清除。
第二方面,本申请实施例还提供了一种内存管理装置,该装置包括:
待入栈视图获取模块,用于根据用户访问页面的操作请求,获取待入栈视图;
页面数据入栈管理模块,用于在导航管理堆栈中识别是否存在与所述待入栈视图一致的视图,当导航管理堆栈中存在与所述待入栈视图一致的视图时,则将与所述待入栈视图一致的视图的页面数据,从内存管理对象中复制到内存缓存管理对象中,并将与所述待入栈视图一致的视图的页面数据从内存管理对象中清除;
第一入栈模块,用于将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
进一步的,所述页面数据入栈管理模块包括:
一致视图识别单元,用于在导航管理堆栈中的次栈顶至栈底中,识别是否存在与所述待入栈视图一致的视图。
进一步的,所述装置还包括:
可复用视图识别模块,用于根据所述待入栈视图中的页面属性,识别是否为可复用视图;
第二入栈模块,用于若否,将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
进一步的,所述第一入栈模块包括:
待入栈视图的页面数据确认单元,用于从所述内存缓存管理对象中,复制与所述待入栈视图一致的视图的页面数据,作为待入栈视图的页面数据;
入栈单元,用于将所述页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
进一步的,所述第一入栈模块和所述第二入栈模块包括:
中间导航管理堆栈入栈单元,用于将所述待入栈视图的页面数据存储至中间导航管理堆栈的栈顶;
操作系统级导航管理堆栈同步单元,用于将所述中间导航管理堆栈的数据同步到操作系统级导航管理堆栈。
进一步的,所述装置包括:
待出栈视图获取模块,用于当获取到用户的页面的返回操作时,将导航管理堆栈的栈顶的视图确定为待出栈视图;
页面数据出栈管理模块,用于当所述导航管理堆栈中存在与所述待出栈视图一致的视图时,则将与所述待出栈视图的页面数据从所述内存管理对象的栈顶清除;
出栈模块,用于将所述待出栈视图推出所述导航管理堆栈。
进一步的,所述装置还包括:
次栈顶管理模块,具体用于:
当导航管理堆栈的次栈顶的视图为可复用视图时,判断与所述次栈顶的视图对应的所述内存管理对象的次栈顶内存是否为空;
若是,从所述内存缓存管理对象中复制所述次栈顶的视图的页面数据至所述内存管理对象的栈顶。
进一步的,所述装置还包括:
页面数据清楚模块,用于当所述导航管理堆栈中不存在与所述待出栈视图一致的视图时,则将与所述待出栈视图的页面数据从所述内存管理对象的栈顶清除,并将与所述待出栈视图的页面数据从所述内存缓存管理对象中清除。
第三方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请实施例所述的内存管理方法。
第四方面,本申请实施例提供了一种移动终端,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请实施例所述的内存管理方法。
本申请实施例通过在用户访问页面的操作请求时,获取到待入栈视图;在导航管理堆栈中识别是否存在与所述待入栈视图一致的视图,若存在,则将与所述待入栈视图一致的视图的页面数据,从内存管理对象中复制到内存缓存管理对象中,并将其从内存管理对象中清除;然后再将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶,解决现有技术中,因为客户端打开视图过多而使得内存暴增而导致卡死或者闪退的问题,实现优化内存管理的效果。
附图说明
图1是本申请实施例一提供的内存管理方法的流程图;
图2是本申请实施例二提供的内存管理方法的流程图;
图3是本申请实施例三提供的内存管理方法的流程图;
图4是本申请实施例四提供的内存管理方法的流程图;
图5是本申请实施例五提供的内存管理方法的流程图;
图6是本申请实施例六提供的内存管理装置的结构示意图;
图7为本申请实施例八提供的一种移动终端的结构示意图;
图8是本申请实施例一提供的内存管理方法的效果图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
实施例一
图1是本申请实施例一提供的内存管理方法的流程图,本实施例可适用客户端因为内存暴增而出现问题的情况,该方法可以由本申请实施例所提供的内存管理装置来执行,该装置可以由软件和/或硬件的方式来实现,并可集成于终端设备中。
如图1所示,所述内存管理方法包括:
S110、根据用户访问页面的操作请求,获取待入栈视图。
其中,在终端设备获取到用户的访问页面操作请求时,获取待入栈视图。终端设备可以是智能手机、平板电脑以及个人数字助理等智能设备终端。终端设备可以通过获取触摸屏上用户的点击操作所对应的位置显示内容的链接确定用户访问页面的视图(视图控制器,ViewController,VC),还可以是在进程中获取用户创建或者访问某一线程确定用户访问页面的视图。例如,用户在电商购物客户端中,可以由商品详情页跳转至购物车,也可以由购物车跳转至客户端首页,其中,商品详情页、购物车以及客户端首页分别为三个视图,而其中的跳转方式可以是点击相应视图链接的图标,也可以是客户点按返回键,在获取到用户点击相应视图链接的图标和点按返回键时,均可以确定为用户访问页面的操作请求,并获取待入栈视图。
其中,待入栈视图可以是即将被推入导航管理堆栈的视图。导航管理堆栈可以用于记录在一个客户端中用户访问视图的历史记录并按照访问的先后进行排序,这样在用户每打开一个新的视图时,就会创建一个新的排序对象,在创建好页面数据内存之后,将其推入导航管理堆栈中,并位于栈顶。这样,在用户点击返回键时,可以依照导航管理堆栈中的顺序以及把视图出栈,就可以按照用户依次打开顺序的倒序进行返回,能够完成的还原已访问链路,提高用户的使用体验。
S120、在导航管理堆栈中识别是否存在与所述待入栈视图一致的视图,当导航管理堆栈中存在与所述待入栈视图一致的视图时,则将与所述待入栈视图一致的视图的页面数据,从内存管理对象中复制到内存缓存管理对象中,并将与所述待入栈视图一致的视图的页面数据从内存管理对象中清除。
在导航管理堆栈中识别是否存在与所述待入栈视图一致的视图。其中,由于待入栈视图还没有被推入到导航管理堆栈的栈顶,所以可以对导航管理堆栈中的视图进行识别,看是否有与待入栈视图相一致的视图。其中,可以根据识别导航管理堆栈中的栈顶至栈底是否有与待入栈视图相一致的视图。如待入栈视图为商品详情页,则可以在获取到用户访问某商品的商品详情页的请求时,识别当前导航管理堆栈中是否已经含有商品详情页的视图。如果用户在此之前已经打开过其他商品或者该商品的商品详情页的视图,如果视图没有被删除的情况下,是可以在导航管理堆栈中识别到商品详情页的视图的。
当导航管理堆栈中存在与所述待入栈视图一致的视图时,则将与所述待入栈视图一致的视图的页面数据,从内存管理对象中复制到内存缓存管理对象中,并将与所述待入栈视图一致的视图的页面数据从内存管理对象中清除。
其中,导航管理堆栈中已经存在的视图的页面数据可以相应的存储在内存管理对象中,其中,内存管理对象也可以是以堆栈的形式管理的。内存管理对象中的页面数据是可以进行识别和清除的,可以针对其中的一个或者多个页面数据进行清除。
在本申请实施例中,不仅提供了内存管理对象对页面数据进行存储,还提供了内存缓存管理对象对页面数据进行缓存。当导航管理堆栈中存在与所述待入栈视图一致的视图时,从内存管理对象中复制到内存缓存管理对象中。由于待入栈视图的页面数据还没有被推入内存管理对象的栈顶,所以不能够将待入栈视图的页面数据直接复制到内存缓存管理对象中。但是与待入栈视图相一致的视图的页面数据存储在内存管理对象中,则可以被复制到内存缓存管理对象中,其中,当存在多个与待入栈视图相一致的视图时,可以将其中的一个视图对应的页面数据从内存管理对象复制到内存缓存管理对象中,这样做的理由是各个和待入栈视图相一致的视图的页面数据是相同的。
在从内存管理对象中复制到内存缓存管理对象中之后,将与所述待入栈视图一致的视图的页面数据从内存管理对象中清除。其中,如果有多个与待入栈视图相一致的视图时,可以将其中的一个视图对应的页面数据从内存管理对象都清除。这样就可以避免重复被用户访问的视图的页面数据每次访问都占用一定的内存,即本实施例中的占用内存管理对象中的一个存储位置。在清除掉页面数据的内存管理对象中,可以存在空的存储位置,也就是说呗删除的页面数据的位置可以不被其他的页面数据所填充,但是由于该存储位置内不存在页面数据,所以也不会对内存管理对象的实际的内存大小产生影响。
S130、将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
在本申请实施例中,可选的,所述将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,包括:从所述内存缓存管理对象中,复制与所述待入栈视图一致的视图的页面数据,作为待入栈视图的页面数据;将所述页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。这样设置的好处是可以根据被复制到内存缓存管理对象中的页面数据,作为待入栈视图的页面数据,并将其存储至内存管理对象的栈顶。这样设置的好处是可以无需再根据待入栈视图创建页面数据并将其存储在内存管理对象的栈顶,达到了优化内存管理的效果。
但是值得说明的是,采取上述方式受限于与待入栈视图一致的视图的页面数据已经被缓存至内存缓存管理对象中,如果不在其中,则可以创建其页面数据对应的内存并存储在内存管理对象的栈顶。
图8是本申请实施例一提供的内存管理方法的效果图。如图8所示,在导航管理堆栈中重复访问的A视图,在内存管理堆栈中只有栈顶占据了一个内存单元,并在内存缓存管理对象中将其页面数据缓存。实现了多次访问同一个视图时,在内存管理对象中只占用一个内存单元的效果。
本申请实施例的技术方案,通过在用户访问页面的操作请求时,获取到待入栈视图;在导航管理堆栈中识别是否存在与所述待入栈视图一致的视图,若存在,则将与所述待入栈视图一致的视图的页面数据,从内存管理对象中复制到内存缓存管理对象中,并将其从内存管理对象中清除;然后再将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶,解决现有技术中,因为客户端打开视图过多而使得内存暴增而导致卡死或者闪退的问题,实现优化内存管理的效果。
在上述技术方案的基础上,可选的,在导航管理堆栈中识别是否存在与所述待入栈视图一致的视图包括:在导航管理堆栈中的次栈顶至栈底中,识别是否存在与所述待入栈视图一致的视图。这样设置的好处在于可以在次栈顶至栈底出现于待入栈视图一致的视图时,将其对应的内存管理对象中的页面数据清除后,不会影响待入栈视图在内存管理对象中的存储位置,否则一旦待入栈视图入栈前,栈顶的视图和待入栈视图相同,则同步的将内存管理对象的栈顶位置的内存也被清除,则待入栈视图的页面数据在存储时要么需要存储在当前栈顶,要么需要对栈顶是否是已经存入的页面数据被清除到时为空进行判断,给待入栈视图的页面数据的入栈带来了很多复杂的问题。所以在本申请实施例中,可以采用从次栈顶至栈底识别是否有与待入栈视图相一致的视图。
实施例二
图2是本申请实施例二提供的内存管理方法的流程图。本实施例在上述实施例的基础上,对内存管理方法进行了进一步的优化。
如图2所示,所述内存管理方法包括:
S210、根据用户访问页面的操作请求,获取待入栈视图。
S220、根据所述待入栈视图中的页面属性,识别是否为可复用视图;若是,则执行S230;若否,则执行S240。
可以根据待入栈视图中的页面属性,识别待入栈视图是否为可复用视图。其中,可复用视图可以是认为该视图的页面数据可以是被重复使用的页面数据。页面属性可以根据用户访问页面时的链接确定的,如商品详情页被定义为可复用视图,则在用户每次打开商品详情页时,都会识别到当前待入栈视图为可复用视图,并执行S230的操作。如果购物车没有被定义为可复用视图,则在用户每次进入购物车时,则可以确定为不可复用视图,并执行S240的操作。其中,对于是否为可复用视图的定义可以在终端设备出厂前就设定好,也可以被后续的系统升级过程中对于新开发的可复用视图进行补充设定。
其中对于可复用视图来说,可以在导航管理堆栈中对可复用视图进行标记,则再次访问视图为可复用视图时,待入栈视图会存在可复用视图的标记。而如果待入栈视图为不可复用视图时,则没有可复用视图的标记,这样,通过识别待入栈视图是否携带有可复用视图的标记即可确定。另外,还可以是在得到待入栈视图时不存在可复用视图的标记,但是在识别导航管理堆栈的次栈顶至栈底时,识别到与待入栈视图一致的视图存在可复用标记,则可以确定为待入栈视图为可复用视图,并可以在后续的入栈操作之前对其进行打标之后再入栈。
S230、在导航管理堆栈中识别是否存在与所述待入栈视图一致的视图,当导航管理堆栈中存在与所述待入栈视图一致的视图时,则将与所述待入栈视图一致的视图的页面数据,从内存管理对象中复制到内存缓存管理对象中,并将与所述待入栈视图一致的视图的页面数据从内存管理对象中清除。
S240、将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
在本实施例中,可以清除的确定,如果待入栈视图不是可复用视图,则直接将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,而此时采取的将待入栈视图的页面数据储至所述内存管理对象的栈顶的操作,可以是直接将创建好的页面数据的内存存储在内存管理对象的栈顶。
本实施例在上述实施例的基础上,提供了根据待入栈视图是否为可复用视图,判断是否需要根据如上述实施例所采用的操作流程,为待入栈视图提供了更多的参考条件,如果待入栈视图为不可复用视图,则可以跳过一些流程直接进行后面的操作,提高了内存管理的速度,同时也使本方案的适用性更强。
实施例三
图3是本申请实施例三提供的内存管理方法的流程图。本实施例在上述实施例的基础上,对内存管理方法进行了进一步的优化。
如图3所示,所述内存管理方法包括:
S310、根据用户访问页面的操作请求,获取待入栈视图。
S320、在导航管理堆栈中识别是否存在与所述待入栈视图一致的视图,当导航管理堆栈中存在与所述待入栈视图一致的视图时,则将与所述待入栈视图一致的视图的页面数据,从内存管理对象中复制到内存缓存管理对象中,并将与所述待入栈视图一致的视图的页面数据从内存管理对象中清除。
S330、将所述待入栈视图的页面数据存储至中间导航管理堆栈的栈顶。
其中,本申请实施例提供了一种中间导航管理堆栈,用于执行与系统级导航管理堆栈的类似的功能,即可以记录视图的访问顺序等功能,可以将所述待入栈视图的页面数据存储至中间导航管理堆栈的栈顶。
S340、将所述中间导航管理堆栈的数据同步到操作系统级导航管理堆栈。
在将所述待入栈视图的页面数据存储至中间导航管理堆栈的栈顶之后,可以将中间导航管理堆栈的数据同步到操作系统级导航管理堆栈当中,其中,同步方式可以是只将中间导航管理堆栈的栈顶发生入栈和出栈操作后的栈顶数据及操作方式同步到系统级导航管理堆栈中,也可以是每次发生栈顶的入站或者出栈操作时,将中间导航管理堆栈中的所有的数据同步至系统级导航管理堆栈中。还可以是每隔一定时期对其同步操作。
S350、将所述待入栈视图推入所述导航管理堆栈的栈顶。
本实施例在上述实施例的基础上,提供了中间导航管理堆栈,这样设置的好处是可以在内存管理过程中,无需直接访问系统级导航管理堆栈,在实际操作中,有利于对中间导航管理堆栈的后续扩展和开发,并对系统底层起到了保护作用,实现了二次封装继承。
实施例四
图4是本申请实施例四提供的内存管理方法的流程图。本实施例在上述实施例的基础上,对内存管理方法进行了进一步的优化。
如图4所示,所述内存管理方法包括:
S410、根据用户访问页面的操作请求,获取待入栈视图。
S420、在导航管理堆栈中识别是否存在与所述待入栈视图一致的视图,当导航管理堆栈中存在与所述待入栈视图一致的视图时,则将与所述待入栈视图一致的视图的页面数据,从内存管理对象中复制到内存缓存管理对象中,并将与所述待入栈视图一致的视图的页面数据从内存管理对象中清除。
S430、将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
S440、当获取到用户的页面的返回操作时,将导航管理堆栈的栈顶的视图确定为待出栈视图。
其中,返回操作可以是终端设备检测到用户点按返回键时,将导航管理堆栈的栈顶的视图确定为待出栈视图。由于当前用户所浏览的页面所对应的视图为导航管理堆栈的栈顶视图,则在检测到用户的返回操作时,则可以确定用户想要访问的是导航管理堆栈中的次栈顶的视图,因此需要对栈顶的视图进行出栈操作,则把栈顶视图作为待出栈视图。
S450、当所述导航管理堆栈中存在与所述待出栈视图一致的视图时,则将与所述待出栈视图的页面数据从所述内存管理对象的栈顶清除。
由于在入栈操作前,对导航管理器中与待入栈视图相一致的视图的页面数据存储在了内存缓存管理对象中,所以当导航管理堆栈中存在与所述待出栈视图一致的视图时,则说明内存缓存管理对象中一定是含有该待出栈视图的页面数据的,而此时的内存管理对象的栈顶也一定是与导航管理堆栈的栈顶视图相对应的页面数据,所以可以将其在内存管理对象的栈顶清除,并且不删除所述内存缓存管理对象中的与待出栈视图相对应的页面数据。
具体的,可以是识别导航管理堆栈中次栈顶至栈底,是否存在与所述待出栈视图一致的视图,如果是,则执行后续操作。
S460、将所述待出栈视图推出所述导航管理堆栈。
将所述待出栈视图推出所述导航管理堆栈,原来的导航管理堆栈的次栈顶作为新的导航管理堆栈的栈顶。
本实施例在上述各实施例的基础上,提供了出栈操作过程中,当导航管理堆栈的栈顶视图与次栈顶至栈底视图存在一致时,可以将其在内存管理对象的栈顶清除,并且不清除所述内存缓存管理对象中的与待出栈视图相对应的页面数据,这样设置可以在减少内存管理对象中的内存占用情况的同时,保证次栈顶至栈底的与待出栈视图相一致的视图的页面数据不至于被删除,可以保证用户访问链路的完整返回,不至于出现因为没有与视图相对应的页面数据而退出客户端的现象。
实施例五
图5是本申请实施例五提供的内存管理方法的流程图。本实施例在上述实施例的基础上,对内存管理方法进行了进一步的优化。
如图5所示,所述内存管理方法包括:
S510、根据用户访问页面的操作请求,获取待入栈视图。
S520、在导航管理堆栈中识别是否存在与所述待入栈视图一致的视图,当导航管理堆栈中存在与所述待入栈视图一致的视图时,则将与所述待入栈视图一致的视图的页面数据,从内存管理对象中复制到内存缓存管理对象中,并将与所述待入栈视图一致的视图的页面数据从内存管理对象中清除。
S530、将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
S540、当获取到用户的页面的返回操作时,将导航管理堆栈的栈顶的视图确定为待出栈视图。
S550、当导航管理堆栈的次栈顶的视图为可复用视图时,判断与所述次栈顶的视图对应的所述内存管理对象的次栈顶内存是否为空;若是,则执行S560;若否,则执行S570。
其中,可以结合上述各实施例中对于可复用视图的标记进行识别,如果识别到次栈顶带有可复用视图标记时,则需要判断与所述次栈顶的视图对应的所述内存管理对象的次栈顶内存是否为空,一般包括两种情况,如果次栈顶的视图为导航管理堆栈中最后一次访问该视图时,则其对应的所述内存管理对象的次栈顶内存应该含有该视图的页面数据,其中最后一次也包含只有一次访问情况下的第一次。如果次栈顶的视图为导航管理堆栈中非最后一次访问该视图时,则其对应的所述内存管理对象的次栈顶内存应该为空。原理是经过上述的入栈操作后,如果不是最后一次访问该视图则会在内存管理对象中把该视图对应的页面数据清除,并且存储在内存缓存管理对象中。
S560、当所述导航管理堆栈中存在与所述待出栈视图一致的视图时,从所述内存缓存管理对象中复制所述次栈顶的视图的页面数据至所述内存管理对象的次栈顶,并将与所述待出栈视图的页面数据从所述内存管理对象的栈顶清除;并执行S580。
结合上述解释,如果为空,则在将与所述待出栈视图的页面数据从所述内存管理对象的栈顶清除之前,需要把次栈顶的视图的页面数据从所述内存缓存管理对象中复制到所述内存管理对象的次栈顶,以保证在栈顶的视图被推出导航管理堆栈之后,能够正常显示次栈顶视图。
S570、当所述导航管理堆栈中存在与所述待出栈视图一致的视图时,则将与所述待出栈视图的页面数据从所述内存管理对象的栈顶清除。
S580、所述待出栈视图推出所述导航管理堆栈。
本实施例在上述各实施例的基础上,提供了对于出栈操作的导航管理堆栈的次栈顶对应的内存管理对象进行识别的操作,这样设置的好处是避免将栈顶视图从导航管理堆栈中进行出栈操作后,从内存管理对象的新栈顶与导航管理堆栈中的新栈顶的视图不对应或者为空的情况,导致视图无法正常显示次栈顶的视图而造成客户端的白屏或者闪退。
在上述各技术方案的基础上,可选的,当所述导航管理堆栈中不存在与所述待出栈视图一致的视图时,则将与所述待出栈视图的页面数据从所述内存管理对象的栈顶清除,并将与所述待出栈视图的页面数据从所述内存缓存管理对象中清除。这样设置的好处是可以清除其在内存缓存管理对象中所占用的空间,从而减小客户端运行过程中占用的内存管理对象及内存缓存管理对象中的空间大小。
实施例六
图6是本申请实施例六提供的内存管理装置的结构示意图。如图6示,所述内存管理装置,包括:
待入栈视图获取模块610,用于根据用户访问页面的操作请求,获取待入栈视图;
页面数据入栈管理模块620,用于在导航管理堆栈中识别是否存在与所述待入栈视图一致的视图,当导航管理堆栈中存在与所述待入栈视图一致的视图时,则将与所述待入栈视图一致的视图的页面数据,从内存管理对象中复制到内存缓存管理对象中,并将与所述待入栈视图一致的视图的页面数据从内存管理对象中清除;
第一入栈模块630,用于将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
本申请实施例的技术方案,通过在用户访问页面的操作请求时,获取到待入栈视图;在导航管理堆栈中识别是否存在与所述待入栈视图一致的视图,若存在,则将与所述待入栈视图一致的视图的页面数据,从内存管理对象中复制到内存缓存管理对象中,并将其从内存管理对象中清除;然后再将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶,解决现有技术中,因为客户端打开视图过多而使得内存暴增而导致卡死或者闪退的问题,实现优化内存管理的效果。
在上述各实施例的基础上,可选的,所述页面数据入栈管理模块620包括:
一致视图识别单元,用于在导航管理堆栈中的次栈顶至栈底中,识别是否存在与所述待入栈视图一致的视图。
在上述各实施例的基础上,可选的,所述装置还包括:
可复用视图识别模块,用于根据所述待入栈视图中的页面属性,识别是否为可复用视图;
第二入栈模块,用于若否,将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
在上述各实施例的基础上,可选的,所述第一入栈模块630包括:
待入栈视图的页面数据确认单元,用于从所述内存缓存管理对象中,复制与所述待入栈视图一致的视图的页面数据,作为待入栈视图的页面数据;
入栈单元,用于将所述页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
在上述各实施例的基础上,可选的,所述第一入栈模块630和所述第二入栈模块包括:
中间导航管理堆栈入栈单元,用于将所述待入栈视图的页面数据存储至中间导航管理堆栈的栈顶;
操作系统级导航管理堆栈同步单元,用于将所述中间导航管理堆栈的数据同步到操作系统级导航管理堆栈。
在上述各实施例的基础上,可选的,所述装置包括:
待出栈视图获取模块,用于当获取到用户的页面的返回操作时,将导航管理堆栈的栈顶的视图确定为待出栈视图;
页面数据出栈管理模块,用于当所述导航管理堆栈中存在与所述待出栈视图一致的视图时,则将与所述待出栈视图的页面数据从所述内存管理对象的栈顶清除;
出栈模块,用于将所述待出栈视图推出所述导航管理堆栈。
在上述各实施例的基础上,可选的,所述装置还包括:
次栈顶管理模块,具体用于:
当导航管理堆栈的次栈顶的视图为可复用视图时,判断与所述次栈顶的视图对应的所述内存管理对象的次栈顶内存是否为空;
若是,从所述内存缓存管理对象中复制所述次栈顶的视图的页面数据至所述内存管理对象的栈顶。
在上述各实施例的基础上,可选的,所述装置还包括:
页面数据清楚模块,用于当所述导航管理堆栈中不存在与所述待出栈视图一致的视图时,则将与所述待出栈视图的页面数据从所述内存管理对象的栈顶清除,并将与所述待出栈视图的页面数据从所述内存缓存管理对象中清除。
上述产品可执行本申请任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
实施例七
本申请实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种内存管理方法,该方法包括:
根据用户访问页面的操作请求,获取待入栈视图;
在导航管理堆栈中识别是否存在与所述待入栈视图一致的视图,当导航管理堆栈中存在与所述待入栈视图一致的视图时,则将与所述待入栈视图一致的视图的页面数据,从内存管理对象中复制到内存缓存管理对象中,并将与所述待入栈视图一致的视图的页面数据从内存管理对象中清除;
将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机系统存储器或随机存取存储器,诸如DRAM、DDR RAM、SRAM、EDO RAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到计算机系统。第二计算机系统可以提供程序指令给计算机用于执行。术语“存储介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的内存管理操作,还可以执行本申请任意实施例所提供的内存管理方法中的相关操作。
实施例八
本申请实施例提供了一种移动终端,该移动终端中可集成本申请实施例提供的内存管理装置。图7为本申请实施例八提供的一种移动终端的结构示意图。如图7所示,该移动终端可以包括:存储器701、中央处理器(Central Processing Unit,CPU)702(又称处理器,以下简称CPU)、电路板(图中未示出)和电源电路(图中未示出)。所述电路板安置在所述壳体围成的空间内部;所述CPU702和所述存储器701设置在所述电路板上;所述电源电路,用于为所述移动终端的各个电路或器件供电;所述存储器701,用于存储可执行程序代码;所述CPU702通过读取所述存储器701中存储的可执行程序代码来运行与所述可执行程序代码对应的计算机程序,以实现以下步骤:
根据用户访问页面的操作请求,获取待入栈视图;
在导航管理堆栈中识别是否存在与所述待入栈视图一致的视图,当导航管理堆栈中存在与所述待入栈视图一致的视图时,则将与所述待入栈视图一致的视图的页面数据,从内存管理对象中复制到内存缓存管理对象中,并将与所述待入栈视图一致的视图的页面数据从内存管理对象中清除;
将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
所述移动终端还包括:外设接口703、RF(Radio Frequency,射频)电路705、音频电路706、扬声器711、电源管理芯片708、输入/输出(I/O)子系统709、触摸屏712、其他输入/控制设备710以及外部端口704,这些部件通过一个或多个通信总线或信号线707来通信。
应该理解的是,图示移动终端700仅仅是移动终端的一个范例,并且移动终端700可以具有比图中所示出的更多的或者更少的部件,可以组合两个或更多的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
下面就本实施例提供的用于内存管理的移动终端进行详细的描述,该移动终端以手机为例。
存储器701,所述存储器701可以被CPU702、外设接口703等访问,所述存储器701可以包括高速随机存取存储器,还可以包括非易失性存储器,例如一个或多个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
外设接口703,所述外设接口703可以将设备的输入和输出外设连接到CPU702和存储器701。
I/O子系统709,所述I/O子系统709可以将设备上的输入输出外设,例如触摸屏712和其他输入/控制设备710,连接到外设接口703。I/O子系统709可以包括显示控制器7091和用于控制其他输入/控制设备710的一个或多个输入控制器7092。其中,一个或多个输入控制器7092从其他输入/控制设备710接收电信号或者向其他输入/控制设备710发送电信号,其他输入/控制设备710可以包括物理按钮(按压按钮、摇臂按钮等)、拨号盘、滑动开关、操纵杆、点击滚轮。值得说明的是,输入控制器7092可以与以下任一个连接:键盘、红外端口、USB接口以及诸如鼠标的指示设备。
触摸屏712,所述触摸屏712是用户移动终端与用户之间的输入接口和输出接口,将可视输出显示给用户,可视输出可以包括图形、文本、图标、视频等。
I/O子系统709中的显示控制器7091从触摸屏712接收电信号或者向触摸屏712发送电信号。触摸屏712检测触摸屏上的接触,显示控制器7091将检测到的接触转换为与显示在触摸屏712上的用户界面对象的交互,即实现人机交互,显示在触摸屏712上的用户界面对象可以是运行游戏的图标、联网到相应网络的图标等。值得说明的是,设备还可以包括光鼠,光鼠是不显示可视输出的触摸敏感表面,或者是由触摸屏形成的触摸敏感表面的延伸。
RF电路705,主要用于建立手机与无线网络(即网络侧)的通信,实现手机与无线网络的数据接收和发送。例如收发短信息、电子邮件等。具体地,RF电路705接收并发送RF信号,RF信号也称为电磁信号,RF电路705将电信号转换为电磁信号或将电磁信号转换为电信号,并且通过该电磁信号与通信网络以及其他设备进行通信。RF电路705可以包括用于执行这些功能的已知电路,其包括但不限于天线系统、RF收发机、一个或多个放大器、调谐器、一个或多个振荡器、数字信号处理器、CODEC(COder-DECoder,编译码器)芯片组、用户标识模块(Subscriber Identity Module,SIM)等等。
音频电路706,主要用于从外设接口703接收音频数据,将该音频数据转换为电信号,并且将该电信号发送给扬声器711。
扬声器711,用于将手机通过RF电路705从无线网络接收的语音信号,还原为声音并向用户播放该声音。
电源管理芯片708,用于为CPU702、I/O子系统及外设接口所连接的硬件进行供电及电源管理。
本申请实施例提供的移动终端,可以实现优化内存管理的效果。
上述实施例中提供的内存管理装置、存储介质及移动终端可执行本申请任意实施例所提供的内存管理方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的内存管理方法。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。

Claims (18)

1.一种内存管理方法,其特征在于,包括:
根据用户访问页面的操作请求,获取待入栈视图;
在导航管理堆栈中识别是否存在与所述待入栈视图一致的视图,当导航管理堆栈中存在与所述待入栈视图一致的视图时,则将与所述待入栈视图一致的视图的页面数据,从内存管理对象中复制到内存缓存管理对象中,并将与所述待入栈视图一致的视图的页面数据从内存管理对象中清除;
将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
2.根据权利要求1所述的方法,其特征在于,在导航管理堆栈中识别是否存在与所述待入栈视图一致的视图包括:
在导航管理堆栈中的次栈顶至栈底中,识别是否存在与所述待入栈视图一致的视图。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述待入栈视图中的页面属性,识别是否为可复用视图;
若否,将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
4.根据权利要求1或2所述的方法,其特征在于,所述将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,包括:
从所述内存缓存管理对象中,复制与所述待入栈视图一致的视图的页面数据,作为待入栈视图的页面数据;
将所述页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
5.根据权利要求1或3所述的方法,其特征在于,将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,包括:
将所述待入栈视图的页面数据存储至中间导航管理堆栈的栈顶;
将所述中间导航管理堆栈的数据同步到操作系统级导航管理堆栈。
6.根据权利要求1所述的方法,其特征在于,包括:
当获取到用户的页面的返回操作时,将导航管理堆栈的栈顶的视图确定为待出栈视图;
当所述导航管理堆栈中存在与所述待出栈视图一致的视图时,则将与所述待出栈视图的页面数据从所述内存管理对象的栈顶清除;
将所述待出栈视图推出所述导航管理堆栈。
7.根据权利要求6所述的方法,其特征在于,在当所述导航管理堆栈中存在与所述待出栈视图一致的视图时,则将与所述待出栈视图的页面数据从所述内存管理对象的栈顶清除之前,还包括:
当导航管理堆栈的次栈顶的视图为可复用视图时,判断与所述次栈顶的视图对应的所述内存管理对象的次栈顶内存是否为空;
若是,从所述内存缓存管理对象中复制所述次栈顶的视图的页面数据至所述内存管理对象的栈顶。
8.根据权利要求6或7所述的方法,其特征在于,还包括:
当所述导航管理堆栈中不存在与所述待出栈视图一致的视图时,则将与所述待出栈视图的页面数据从所述内存管理对象的栈顶清除,并将与所述待出栈视图的页面数据从所述内存缓存管理对象中清除。
9.一种内存管理装置,其特征在于,包括:
待入栈视图获取模块,用于根据用户访问页面的操作请求,获取待入栈视图;
页面数据入栈管理模块,用于在导航管理堆栈中识别是否存在与所述待入栈视图一致的视图,当导航管理堆栈中存在与所述待入栈视图一致的视图时,则将与所述待入栈视图一致的视图的页面数据,从内存管理对象中复制到内存缓存管理对象中,并将与所述待入栈视图一致的视图的页面数据从内存管理对象中清除;
第一入栈模块,用于将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
10.根据权利要求9所述的装置,其特征在于,所述页面数据入栈管理模块包括:
一致视图识别单元,用于在导航管理堆栈中的次栈顶至栈底中,识别是否存在与所述待入栈视图一致的视图。
11.根据权利要求9所述的装置,其特征在于,还包括:
可复用视图识别模块,用于根据所述待入栈视图中的页面属性,识别是否为可复用视图;
第二入栈模块,用于若否,将所述待入栈视图的页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
12.根据权利要求9或10所述的装置,其特征在于,所述第一入栈模块包括:
待入栈视图的页面数据确认单元,用于从所述内存缓存管理对象中,复制与所述待入栈视图一致的视图的页面数据,作为待入栈视图的页面数据;
入栈单元,用于将所述页面数据存储至所述内存管理对象的栈顶,并将所述待入栈视图推入所述导航管理堆栈的栈顶。
13.根据权利要求11所述的装置,其特征在于,所述第一入栈模块和所述第二入栈模块包括:
中间导航管理堆栈入栈单元,用于将所述待入栈视图的页面数据存储至中间导航管理堆栈的栈顶;
操作系统级导航管理堆栈同步单元,用于将所述中间导航管理堆栈的数据同步到操作系统级导航管理堆栈。
14.根据权利要求9所述的装置,其特征在于,包括:
待出栈视图获取模块,用于当获取到用户的页面的返回操作时,将导航管理堆栈的栈顶的视图确定为待出栈视图;
页面数据出栈管理模块,用于当所述导航管理堆栈中存在与所述待出栈视图一致的视图时,则将与所述待出栈视图的页面数据从所述内存管理对象的栈顶清除;
出栈模块,用于将所述待出栈视图推出所述导航管理堆栈。
15.根据权利要求14所述的装置,其特征在于,还包括:
次栈顶管理模块,具体用于:
当导航管理堆栈的次栈顶的视图为可复用视图时,判断与所述次栈顶的视图对应的所述内存管理对象的次栈顶内存是否为空;
若是,从所述内存缓存管理对象中复制所述次栈顶的视图的页面数据至所述内存管理对象的栈顶。
16.根据权利要求14或15所述的装置,其特征在于,还包括:
页面数据清楚模块,用于当所述导航管理堆栈中不存在与所述待出栈视图一致的视图时,则将与所述待出栈视图的页面数据从所述内存管理对象的栈顶清除,并将与所述待出栈视图的页面数据从所述内存缓存管理对象中清除。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-8中任一所述的内存管理方法。
18.一种移动终端,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-8中任一所述的内存管理方法。
CN201711019767.9A 2017-10-26 2017-10-26 一种内存管理方法、装置、存储介质及终端设备 Active CN107678780B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711019767.9A CN107678780B (zh) 2017-10-26 2017-10-26 一种内存管理方法、装置、存储介质及终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711019767.9A CN107678780B (zh) 2017-10-26 2017-10-26 一种内存管理方法、装置、存储介质及终端设备

Publications (2)

Publication Number Publication Date
CN107678780A CN107678780A (zh) 2018-02-09
CN107678780B true CN107678780B (zh) 2020-10-16

Family

ID=61142506

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711019767.9A Active CN107678780B (zh) 2017-10-26 2017-10-26 一种内存管理方法、装置、存储介质及终端设备

Country Status (1)

Country Link
CN (1) CN107678780B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108900913B (zh) * 2018-07-09 2020-11-03 北京酷我科技有限公司 一种基于视频播放所有者的分级视图控制方法
CN108882039B (zh) * 2018-07-09 2020-11-03 北京酷我科技有限公司 一种视频播放所有者的切换控制方法
CN109358932A (zh) * 2018-09-28 2019-02-19 上海七色猫网络科技有限公司 通用软件界面流程控制方法
CN110618848A (zh) * 2018-12-25 2019-12-27 北京时光荏苒科技有限公司 一种页面显示方法、装置、设备及存储介质
CN111381943B (zh) * 2018-12-29 2024-03-12 深圳Tcl数字技术有限公司 一种应用程序闪退处理方法、智能终端及存储介质
CN111538574B (zh) * 2020-03-27 2024-03-12 北京达佳互联信息技术有限公司 任务堆栈的管理方法、装置、终端及存储介质
CN112380017B (zh) * 2020-11-30 2024-04-09 成都虚谷伟业科技有限公司 一种基于松散内存释放的内存管理系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102902805B (zh) * 2012-10-15 2017-06-27 东软集团股份有限公司 一种页面访问方法和装置
US9569400B2 (en) * 2012-11-21 2017-02-14 International Business Machines Corporation RDMA-optimized high-performance distributed cache
CN104965708B (zh) * 2015-06-30 2018-09-28 北京奇艺世纪科技有限公司 一种应用程序运行过程的内存管理方法及装置
CN106055660A (zh) * 2016-06-01 2016-10-26 努比亚技术有限公司 移动终端页面访问方法、装置及移动终端
CN106095568B (zh) * 2016-06-01 2019-10-29 努比亚技术有限公司 内存管理装置、移动终端及方法

Also Published As

Publication number Publication date
CN107678780A (zh) 2018-02-09

Similar Documents

Publication Publication Date Title
CN107678780B (zh) 一种内存管理方法、装置、存储介质及终端设备
US10831314B2 (en) Method and electronic device for preventing touch button from being false triggered
CN108614722B (zh) 应用程序预加载方法、装置、存储介质及终端
CN108647052B (zh) 应用程序预加载方法、装置、存储介质及终端
EP3567476B1 (en) Application data processing method and apparatus, and storage medium
CN108681475B (zh) 应用程序预加载方法、装置、存储介质及移动终端
US11467855B2 (en) Application preloading method and device, storage medium and terminal
EP3570163B1 (en) Method for launching application, storage medium, and terminal
CN106681635B (zh) 一种分屏防误触方法、装置及移动终端
EP3575961B1 (en) Method and apparatus for updating application prediction model, storage medium, and terminal
CN107491560B (zh) 页面图片显示方法、装置、存储介质、服务器及移动终端
CN108958830B (zh) 应用程序启动方法、装置、存储介质及终端
CN108763579B (zh) 搜索内容推荐方法、装置、终端设备及存储介质
WO2020007012A1 (zh) 一种搜索页面显示方法、装置、终端及存储介质
US20190370021A1 (en) Method for Preloading Application, Storage Medium, and Terminal
CN108710515B (zh) 应用预加载方法、装置、存储介质及终端
EP3584710B1 (en) Method and apparatus for controlling display of mobile terminal, and storage medium
CN108647056B (zh) 应用程序预加载方法、装置、存储介质及终端
CN110955631A (zh) 文件访问追踪方法、装置、存储介质及终端
CN107422916B (zh) 一种触摸操作的响应方法、装置、存储介质及终端
CN107402712B (zh) 一种触摸操作的响应方法、装置、存储介质及终端
CN108710512B (zh) 应用程序的预加载方法、装置、存储介质及智能终端
CN111158788A (zh) 桌面启动器控制方法、装置及存储介质
CN108762838B (zh) 应用程序预加载方法、装置、存储介质及终端
CN108920531B (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
GR01 Patent grant
GR01 Patent grant