CN110457235A - 内存压缩方法、装置、终端及存储介质 - Google Patents

内存压缩方法、装置、终端及存储介质 Download PDF

Info

Publication number
CN110457235A
CN110457235A CN201910769746.1A CN201910769746A CN110457235A CN 110457235 A CN110457235 A CN 110457235A CN 201910769746 A CN201910769746 A CN 201910769746A CN 110457235 A CN110457235 A CN 110457235A
Authority
CN
China
Prior art keywords
page
memory
compression
target memory
target
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.)
Granted
Application number
CN201910769746.1A
Other languages
English (en)
Other versions
CN110457235B (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.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp 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 Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN201910769746.1A priority Critical patent/CN110457235B/zh
Publication of CN110457235A publication Critical patent/CN110457235A/zh
Application granted granted Critical
Publication of CN110457235B publication Critical patent/CN110457235B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

本申请实施例公开了一种内存压缩方法、装置、终端及存储介质,属于内存压缩领域。所述方法包括:当满足内存压缩触发条件时,对内存空间中的目标内存页进行内存压缩,得到压缩后的所述目标内存页;根据压缩前后所述目标内存页的数据量,确定所述目标内存页的压缩率;若所述压缩率指示所述目标内存页满足写入条件,则将压缩后的所述目标内存页写入所述内存空间中的内存压缩空间;若所述压缩率指示所述目标内存页不满足所述写入条件,则停止将所述目标内存页写入所述内存压缩空间。通过设置写入条件,并拒绝将不符合写入条件的内存页写入内存压缩空间,减少CPU进行无用的解压缩过程,进一步提高内存压缩空间的整体压缩率。

Description

内存压缩方法、装置、终端及存储介质
技术领域
本申请实施例涉及内存压缩领域,特别涉及一种内存压缩方法、装置、终端及存储介质。
背景技术
终端会根据应用程序的需求分配一定的内存页,应用程序即使在没有运行的情况下,也会占用一部分的内存页,当终端内存紧张时,会采用内存压缩机制,对该应用程序占用的内存页进行压缩,将压缩后的内存页先写入到压缩空间,可以释放一部分的内存空间,再次需要该数据时,对其进行解压缩,再进行调用。
采用内存压缩机制需要耗费一定的内存、中央处理器(Central ProcessingUnit,CPU)以及输入输出接口(Input/Output,I/O),但某些内存页压缩后与压缩前的大小相当,对这类的内存页进行压缩不能达到尽快释放内存空间的目的,还会浪费CPU压缩或解压缩的时间。
发明内容
本申请实施例提供了一种内存压缩方法、装置、终端及存储介质。所述技术方案如下:
一方面,本申请实施例提供了一种内存压缩方法,所述方法包括:
当满足内存压缩触发条件时,对内存空间中的目标内存页进行内存压缩,得到压缩后的所述目标内存页;
根据压缩前后所述目标内存页的数据量,确定所述目标内存页的压缩率;
若所述压缩率指示所述目标内存页满足写入条件,则将压缩后的所述目标内存页写入所述内存空间中的内存压缩空间;
若所述压缩率指示所述目标内存页不满足所述写入条件,则停止将所述目标内存页写入所述内存压缩空间。
另一方面,本申请实施例提供了一种内存压缩装置,所述装置包括:
压缩模块,用于当满足内存压缩触发条件时,对内存空间中的目标内存页进行内存压缩,得到压缩后的所述目标内存页;
第一确定模块,用于根据压缩前后所述目标内存页的数据量,确定所述目标内存页的压缩率;
写入模块,用于若所述压缩率指示所述目标内存页满足写入条件,则将压缩后的所述目标内存页写入所述内存空间中的内存压缩空间;
停止写入模块,用于若所述压缩率指示所述目标内存页不满足所述写入条件,则停止将所述目标内存页写入所述内存压缩空间。
另一方面,本申请实施例提供了一种终端,所述终端包括处理器和存储器;所述存储器存储有至少一条指令,所述至少一条指令用于被所述处理器执行以实现如上述方面所述的内存压缩方法。
另一方面,提供了一种计算机可读存储介质,所述存储介质存储有至少一条指令,所述至少一条指令用于被处理器执行以实现如上述方面所述的内存压缩方法。
另一方面,还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现上述方面所述的内存压缩方法。
采用本申请实施例提供的内存压缩方法,当满足内存压缩触发条件时,对内存空间中的目标内存页进行内存压缩,根据压缩前后目标内存页的数据量,确定目标内存页的压缩率,若压缩率指示该目标内存页满足写入条件,则将压缩后的目标内存页写入内存空间中的内存压缩空间;若压缩率指示该目标内存页不满足写入条件,则停止将目标内存页写入内存压缩空间。通过设置写入条件,并拒绝将不符合写入条件的内存页写入内存压缩空间,可以在有效释放内存空间的基础上,避免对压缩前后数据量变化较小的内存页进行解压缩,减少CPU进行无用的解压缩过程,进一步提高内存压缩空间的整体压缩率。
附图说明
图1示出了本申请实施例提供的内存压缩方法的原理示意图;
图2示出了本申请一个示例性实施例提供的内存压缩方法的流程图;
图3示出了本申请一个示例性实施例中第三方应用程序进行内存压缩的界面图;
图4示出了本申请另一个示例性实施例示出的内存压缩方法的流程图;
图5示出了本申请另一个示例性实施例示出的内存压缩方法的流程图;
图6示出了本申请一个示例性实施例中目标链表的构成图以及确定目标内存页过程的实施示意图;
图7示出了本申请另一个示例性实施例示出的内存压缩方法的流程图;
图8示出了本申请一个示例性实施例中设置预设应用程序过程的界面示意图;
图9示出了本申请另一个示例性实施例中确定目标内存页过程的实施示意图;
图10示出了本申请一个示例性实施例提供的内存压缩装置的结构框图;
图11示出了本申请一个示例性实施例提供的终端的结构方框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
相关技术中,内存压缩机制是一种将内存页压缩后写入内存压缩空间的机制。当满足内存压缩触发条件时,比如,系统内存紧张时,从目标链表中选取使用次数最少的内存页进行内存压缩,再将压缩后的内存页写入内存压缩空间,从而释放一部分的内存空间,以满足系统内存的需求。
显然,采用相关技术中提供的内存压缩方法,由于内存压缩需要耗费一定的内存、CPU以及I/O,但某些内存页压缩前后数据量变化较小,对这类的内存页进行压缩不能达到尽快释放内存空间的目的,还会浪费CPU压缩或解压缩的时间。
为了解决相关技术中存在的问题,本申请实施例提供的方法中,对原有的内存压缩流程进行了改进,得到改进后的流程图如图1所示。该流程下,当系统内存紧张时,选取链表中使用次数最少的内存页(且内存页没有预设标记)进行内存压缩,根据压缩前后内存页的数据量,确定内存页的压缩率,若该内存页压缩率符合预设值,则将压缩后的内存页写入内存空间中的内存压缩空间;若该内存页压缩率不符合预设值,则拒绝将压缩后的内存页写入内存压缩空间,并对该内存页设置预设标记,仍旧存储在内存压缩空间外的内存空间,且只有当该页面内容被修改时,才会清除标记。通过设置写入条件,拒绝将压缩后的不符合压缩率预设值的内存页写入内存压缩空间,并对该内存页设置预设标记,以便在下次进行内存压缩时跳过被标记的内存页,可以在有效释放内存空间的基础上,减少CPU进行无用的压缩或解压缩过程,进一步提高内存压缩空间的整体压缩率。
请参考图2,其示出了本申请一个示例性实施例示出的内存压缩方法的流程图。其中,该内存压缩方法可以由终端内部的操作系统控制实施,也可以由相关的第三方应用程序实施。该方法包括:
步骤201,当满足内存压缩触发条件时,对内存空间中的目标内存页进行内存压缩,得到压缩后的目标内存页。
其中,内存压缩触发条件可以是终端自动检测到剩余内存空间无法满足应用程序需求时触发,比如,当终端检测到剩余内存空间为100MB,而此时应用程序可能需要占用内存空间150MB,则触发内存压缩;也可以是用户根据需求手动触发内存压缩。
示意性的,如图3所示,在应用程序界面301上层显示当前的内存占用情况,即被占用的内存空间占全部内存空间的百分比,如:70%已用,用户可以根据自己的需求,手动触发内存压缩,即点击内存压缩按键302;当进行内存压缩之后,在应用程序界面301上层显示压缩后的内存占用情况,如:40%已用。
其中,目标内存页主要从第三方应用程序(Application,APP)占用的匿名页中选取,终端会根据每个应用程序的需求分配内存页,其中APP匿名页是可以进行内存压缩的内存页。在一种可能的实施方式中,满足内存压缩条件时,终端会选取内存空间中的APP匿名页进行内存压缩。
步骤202,根据压缩前后目标内存页的数据量,确定目标内存页的压缩率。
其中,根据压缩前目标内存页的数据量、压缩后目标内存页的数据量来确定目标内存页的压缩率。采用的公式可以为:
CR=[(DM-DM′)/DM]%或CR=(DM′/DM)%
CR为目标内存页的压缩率,DM为压缩前目标内存页的数据量,DM′为压缩后目标内存页的数据量。在一种可能的实施方式中,可以根据上述任一公式来确定目标内存页的压缩率。
步骤203,若压缩率指示目标内存页满足写入条件,则将压缩后的目标内存页写入内存空间中的内存压缩空间。
由于压缩后的目标内存页会存储在内存压缩空间中,当终端再次需要使用该目标内存页时,需要从内存压缩空间中将目标内存页进行解压缩之后,目标内存页才可以继续供APP使用,这些过程都需要CPU来执行,因此不是所有的压缩后的目标内存页都需要存储在内存压缩空间中。比如:压缩前后目标内存页的数据量变化较小,如果将该目标内存页存储在内存压缩空间,不仅会降低内存压缩空间的整体压缩率,还可能占用CPU进行无用的解压缩过程。
在一种可能的实施方式中,终端根据压缩率来判断是否将目标内存页写入内存压缩空间。可选的,压缩率由CR=[(DM-DM′)/DM]%来确定,此时写入条件可以是CR大于等于压缩率阈值,比如,压缩率阈值可以是60%,即当目标内存页的压缩率大于等于60%时,则将压缩后的目标内存页写入内存空间中的内存压缩空间。
可选的,压缩率由CR=(DM′/DM)%来确定,此时写入条件可以是CR小于等于压缩率阈值,比如,压缩率阈值可以是40%,即当目标内存页的压缩率小于等于40%时,则将压缩后的目标内存页写入内存空间中的内存压缩空间。
步骤204,若压缩率指示目标内存页不满足写入条件,则停止将目标内存页写入内存压缩空间。
在一种可能的实施方式中,压缩率由CR=(DM-DM′)/DM]%来确定,此时写入条件可以是CR大于等于压缩率阈值,比如,压缩率阈值可以是60%,即当目标内存页的压缩率小于60%时,则拒绝将压缩后的目标内存页写入内存空间中的内存压缩空间。
可选的,压缩率由CR=(DM′/DM)%来确定,此时写入条件可以是CR小于等于压缩率阈值,比如,压缩率阈值可以是40%,即当目标内存页的压缩率大于40%时,则拒绝将压缩后的目标内存页写入内存空间中的内存压缩空间。
可选的,不满足写入条件的目标内存页仍旧存储在内存压缩空间外的内存空间。
综上所述,本申请实施例中,当满足内存压缩触发条件时,对内存空间中的目标内存页进行内存压缩,根据压缩前后目标内存页的数据量,确定目标内存页的压缩率,若压缩率指示该目标内存页满足写入条件,则将压缩后的目标内存页写入内存空间中的内存压缩空间;若压缩率指示该目标内存页不满足写入条件,则停止将目标内存页写入内存压缩空间。通过设置写入条件,并拒绝将不符合写入条件的内存页写入内存压缩空间,可以在有效释放内存空间的基础上,避免对压缩前后数据量变化较小的内存页进行解压缩,减少CPU进行无用的解压缩过程,进一步提高内存压缩空间的整体压缩率。
在一种可能的实施方式中,由于终端可能需要进行多次内存压缩,对于不满足写入条件的目标内存页,其在后续的内存压缩过程中可能仍不满足写入条件,为了避免占用CPU对这些不满足写入条件的目标内存页进行无用的压缩过程,可以对不满足写入条件的目标内存页设置预设标识,以避免在后续的内存压缩过程中对该目标内存页进行无用的压缩过程。
请参考图4,其示出了本申请另一个示例性实施例示出的内存压缩方法的流程图。该方法包括:
步骤401,当满足内存压缩触发条件时,将内存空间中不包含预设标识的内存页确定为目标内存页,预设标识用于指示内存页不满足写入条件。
在一种可能的实施方式中,当终端检测到剩余内存空间小于内存空间阈值时,则触发内存压缩。比如,内存空间阈值是300MB,当终端检测到当前的剩余内存空间是150MB时,则触发内存压缩。
其中,预设标识可以是之前进行内存压缩时对不满足写入条件的目标内存页所设置的标识。
终端在进行内存管理时,会根据内存页的活跃度排序生成链表,内存页的活跃度即内存页的使用次数,因此在内存压缩时,也可以根据内存页的活跃度来选取目标内存页。
在一种可能的实施方式中,在图4的基础上,如图5所示,步骤401还包括:
步骤401A,当满足内存压缩触发条件时,根据内存页的活跃度从目标链表中获取候选内存页,目标链表中包含根据活跃度排序后的内存页。
示意性的,如图6所示,应用程序A占用的内存页601、应用程序B占用的内存页602,这两个应用程序在一段时间内的使用次数对应的是其占用的内存页的活跃度,目标链表605是根据内存页的活跃度依次排序,从目标链表头部603至目标链表尾部604依次活跃度降低,当满足内存触发条件时,终端会从目标链表尾部604往前依次选取候选内存页。
步骤401B,若候选内存页不包含预设标识,则将候选内存页确定为目标内存页。
示意性的,如图6所示,在目标链表605中,内存页1设置有预设标识606,终端从目标链表尾部604往前依次确定目标内存页的过程中,当获取到内存页1中设置有预设标识606时,则跳过该内存页,继续选取下一个内存页。
步骤402,对目标内存页进行内存压缩,得到压缩后的目标内存页。
在一种可能的实施方式中,终端根据内存压缩算法对目标内存也页进行压缩,得到压缩后的目标内存页。
步骤403,根据压缩前后目标内存页的数据量,确定目标内存页的压缩率。
本步骤的实施方式可以参考步骤202,本实施例在此不再赘述。
步骤404,若压缩率指示目标内存页满足写入条件,则将压缩后的目标内存页写入内存空间中的内存压缩空间。
在一种可能的实施方式中,当剩余的内存空间接近0时,可能需尽快释放大量的内存空间以满足应用程序需求,此时可以适当调整压缩率阈值,尽可能释放更多的内存空间,因此压缩率阈值可以由剩余内存空间来确定。
可选的,当压缩率由CR=[(DM-DM′)/DM]%来确定,则压缩率阈值与剩余内存空间呈正相关关系,即剩余内存空间越少,压缩率阈值越低。比如,当剩余的内存空间为500MB时,压缩率阈值为60%,当剩余的内存空间为200MB时,压缩率阈值可以为40%。
可选的,当压缩率由CR=(DM′/DM)%来确定,则压缩率阈值与剩余内存空间呈负相关关系,即剩余内存空间越少,压缩率阈值越高。比如,当剩余的内存空间为500MB时,压缩率阈值为40%,当剩余的内存空间为200MB时,压缩率阈值可以为60%。
步骤405,若压缩率指示目标内存页不满足写入条件,则停止将目标内存页写入内存压缩空间。
本步骤的实施方式可以参考步骤204,本实施例在此不做赘述。
步骤406,若压缩率指示目标内存页不满足写入条件,则为目标内存页设置预设标识。
在一种可能的实施方式中,由于终端可能需要进行多次内存压缩,对于不满足写入条件的目标内存页可能在后续的内存压缩过程中仍不满足写入条件,为了避免占用CPU对这些不满足写入条件的目标内存页进行无用的压缩过程,就需要对不满足写入条件的目标内存页设置预设标识,以便在下次进行内存压缩时,跳过该目标内存页面,进而选取其他的目标内存页进行内存压缩。
需要说明的是,步骤405与406之间并不存在的严格时序关系,即步骤405可以与步骤406同时执行,本实施例对此不作限定。
然而,由于目标内存页的压缩率不是一定的,可能会受到目标内存页中存储的数据以及使用的内存压缩算法影响,例如当内存压缩算法发生改变时,对于同一目标内存页,使用改变后的内存压缩算法进行内存压缩,其压缩率可能会满足写入条件。因此,为了更准确的确定合适的目标内存页进行内存压缩,当这两个因素发生变化时,应该重新对该目标内存页进行内存压缩,以便判断其是否具备写入条件。
步骤407,若目标内存页的数据发生变化,则清除为目标内存页设置的预设标识。
在一种可能的实施方式中,当检测到设置有预设标识的目标内存页中存储的数据发生改变,可以是数据量的改变,也可以是数据类型的改变,此时应该将预设标识清除,以便在后续的内存压缩过程中可以对该目标内存页进行内存压缩,重新判断该目标内存页是否满足写入条件。
步骤408,若使用的内存压缩算法发生变化,则清除为目标内存页设置的预设标识。
由于对于同一内存页,使用不同的内存压缩算法进行内存压缩后,得到的压缩后的目标内存页的大小可能不相同,进而得到的压缩率也不相同。比如,对一个大小为4KB的目标内存页进行压缩,若使用压缩算法A压缩后大小可能为2KB,若使用压缩算法B压缩后大小可能为1KB。
因此,在一种可能的实施方式中,当使用的内存压缩算法发生改变时,则清除为目标内存页设置的预设标识,以便在后续的内存压缩过程中可以对该目标内存页进行内存压缩,重新判断该目标内存页是否满足写入条件。
本实施例中,通过为不满足写入条件的目标内存页设置预设标识,在后续的内存压缩过程中,当终端识别到预设标识,跳过该目标内存页,不对设置有预设标识的目标内存页进行再次压缩,可以在尽快释放更多内存空间的基础上,避免CPU进行无用的压缩和解压缩过程,从而提高内存压缩空间的整体压缩率;此外,当目标内存页的数据或使用的内存压缩算法发生变化时,则清除为目标内存页设置的预设标识,可以更准确地确定合适的目标内存页进行内存压缩,以便重新判断目标内存页是否具备写入条件。
在一种可能的实施方式中,某些应用程序要求应用响应速度很快,如果将该应用程序占用的内存页进行内存压缩后写入内存压缩空间,在下次使用时,需要进行解压缩才能调用这些内存页,可能无法满足应用程序的响应速度需求,此时,可能需要在进行内存压缩的时候,跳过该内存页,进而选取其他的内存页作为目标内存页。
示意性的,在图5的基础上,如图7所示,步骤401B可以被替换为步骤409。
步骤409,若候选内存页不包含预设标识,且候选内存页不属于预设应用程序,则将候选内存页确定为目标内存页,预设应用程序的应用响应速度需求高于其它应用程序的应用响应速度需求。
可选的,用户可以根据需求设置预设应用程序,示意性的,如图8所示,在应用程序界面801上层,用户在进行内存压缩操作之前,即点击内存压缩按键802之前,首先进行应用程序的勾选,可以不选中预设应用程序803,在内存压缩过程中,终端则不会对预设应用程序803占用的内存页进行压缩。
在一种可能的实施方式中,在候选内存页中,终端跳过设置有预设标识的候选内存页,以及预设应用程序占用的候选内存页,将其他的候选内存页确定为目标内存页。
示意性的,如图9所示,应用程序A占用的内存页901、应用程序C占用的内存页902以及应用程序B占用的内存页903,目标链表905根据内存页的活跃度依次排序,其中内存页1设置有预设标识906,且应用程序B为预设应用程序,当满足内存触发条件,终端从目标链表的尾部904往前依次确定目标内存页的过程中,当识别到内存页11以及内存页12为预设应用程序B占有的内存页时,跳过该内存页,当获取到内存页1中设置有预设标识时,也需要跳过该内存页,继续选取下一个内存页。
本实施例中,用户可以通过手动预设应用程序,使得终端在进行内存压缩的过程中,跳过预设应用程序所占用的内存页,继续选取其他的内存页作为目标内存页进行内存压缩,可以在高效使用CPU的基础上,满足预设应用程序的响应速度需求。
请参考图10,其示出了本申请一个示例性实施例提供的内存压缩装置的结构框图。该装置可以通过软件、硬件或者两者的结合实现成为终端的全部或一部分。该装置包括:
压缩模块1001,用于当满足内存压缩触发条件时,对内存空间中的目标内存页进行内存压缩,得到压缩后的所述目标内存页;
第一确定模块1002,用于根据压缩前后所述目标内存页的数据量,确定所述目标内存页的压缩率;
写入模块1003,用于若所述压缩率指示所述目标内存页满足写入条件,则将压缩后的所述目标内存页写入所述内存空间中的内存压缩空间;
停止写入模块1004,用于若所述压缩率指示所述目标内存页不满足所述写入条件,则停止将所述目标内存页写入所述内存压缩空间。
可选的,所述压缩模块1001还包括:
确定单元,用于当满足所述内存压缩触发条件时,将所述内存空间中不包含预设标识的内存页确定为所述目标内存页,所述预设标识用于指示内存页不满足所述写入条件;
压缩单元,用于对所述目标内存页进行内存压缩,得到压缩后的所述目标内存页。
可选的,所述装置还包括:
标识模块,用于若所述压缩率指示所述目标内存页不满足所述写入条件,则为所述目标内存页设置所述预设标识。
可选的,所述装置还包括:
第一清除模块,用于若所述目标内存页的数据发生变化,则清除为所述目标内存页设置的所述预设标识;
和/或,
第二清除模块,用于若使用的内存压缩算法发生变化,则清除为所述目标内存页设置的所述预设标识。
可选的,所述确定单元还用于:
当满足所述内存压缩触发条件时,根据内存页的活跃度从目标链表中获取候选内存页,所述目标链表中包含根据活跃度排序后的内存页;
若所述候选内存页不包含所述预设标识,则将所述候选内存页确定为所述目标内存页。
可选的,所述确定单元还用于:
若所述候选内存页不包含所述预设标识,且所述候选内存页不属于预设应用程序,则将所述候选内存页确定为所述目标内存页,所述预设应用程序的应用响应速度需求高于其它应用程序的应用响应速度需求。
可选的,所述内存压缩触发条件包括剩余内存空间小于内存空间阈值,所述写入条件包括所述目标内存页的所述压缩率低于压缩率阈值。
可选的,所述装置还包括:
第二确定模块,用于根据所述剩余内存空间确定所述压缩率阈值,所述压缩率阈值与所述剩余内存空间呈负相关关系。
本实施例中,当满足内存压缩触发条件时,对内存空间中的目标内存页进行内存压缩,根据压缩前后目标内存页的数据量,确定目标内存页的压缩率,若压缩率指示该目标内存页满足写入条件,则将压缩后的目标内存页写入内存空间中的内存压缩空间;若压缩率指示该目标内存页不满足写入条件,则停止将目标内存页写入内存压缩空间。通过设置写入条件,并拒绝将不符合写入条件的内存页写入内存压缩空间,可以在有效释放内存空间的基础上,避免对压缩前后数据量变化较小的内存页进行解压缩,减少CPU进行无用的解压缩过程,进一步提高内存压缩空间的整体压缩率。
请参考图11,其示出了本申请一个示例性实施例提供的终端1100的结构方框图。该终端1100可以是智能手机、平板电脑、电子书、便携式个人计算机等安装并运行有应用程序的电子设备。本申请中的终端1100可以包括一个或多个如下部件:处理器1101、存储器1102和屏幕1103。
处理器1101可以包括一个或者多个处理核心。处理器1101利用各种接口和线路连接整个终端1100内的各个部分,通过运行或执行存储在存储器1102内的指令、程序、代码集或指令集,以及调用存储在存储器1102内的数据,执行终端1100的各种功能和处理数据。可选地,处理器1101可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器1101可集成CPU、图像处理器(GraphicsProcessing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责屏幕1103所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1101中,单独通过一块通信芯片进行实现。
存储器1102可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选地,该存储器1102包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器1102可用于存储指令、程序、代码、代码集或指令集。存储器1102可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等,该操作系统可以是安卓(Android)系统(包括基于Android系统深度开发的系统)、苹果公司开发的IOS系统(包括基于IOS系统深度开发的系统)或其它系统。存储数据区还可以存储终端1100在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
屏幕1103可以为电容式触摸显示屏,该电容式触摸显示屏用于接收用户使用手指、触摸笔等任何适合的物体在其上或附近的触摸操作,以及显示各个应用程序的用户界面。触摸显示屏通常设置在终端1100的前面板。触摸显示屏可被设计成为全面屏、曲面屏或异型屏。触摸显示屏还可被设计成为全面屏与曲面屏的结合,异型屏与曲面屏的结合,本申请实施例对此不加以限定。
除此之外,本领域技术人员可以理解,上述附图所示出的终端1100的结构并不构成对终端1100的限定,终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,终端1100中还包括射频电路、拍摄组件、传感器、音频电路、无线保真(Wireless Fidelity,WiFi)组件、电源、蓝牙组件等部件,在此不再赘述。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的内存压缩方法。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的内存压缩方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (14)

1.一种内存压缩方法,其特征在于,所述方法包括:
当满足内存压缩触发条件时,对内存空间中的目标内存页进行内存压缩,得到压缩后的所述目标内存页;
根据压缩前后所述目标内存页的数据量,确定所述目标内存页的压缩率;
若所述压缩率指示所述目标内存页满足写入条件,则将压缩后的所述目标内存页写入所述内存空间中的内存压缩空间;
若所述压缩率指示所述目标内存页不满足所述写入条件,则停止将所述目标内存页写入所述内存压缩空间。
2.根据权利要求1所述的方法,其特征在于,所述当满足内存压缩触发条件时,对内存空间中的目标内存页进行内存压缩,得到压缩后的所述目标内存页,包括:
当满足所述内存压缩触发条件时,将所述内存空间中不包含预设标识的内存页确定为所述目标内存页,所述预设标识用于指示内存页不满足所述写入条件;
对所述目标内存页进行内存压缩,得到压缩后的所述目标内存页;
所述根据压缩前后所述目标内存页的数据量,确定所述目标内存页的压缩率之后,所述方法还包括:
若所述压缩率指示所述目标内存页不满足所述写入条件,则为所述目标内存页设置所述预设标识。
3.根据权利要求2所述的方法,其特征在于,所述为所述目标内存页设置所述预设标识之后,所述方法还包括:
若所述目标内存页的数据发生变化,则清除为所述目标内存页设置的所述预设标识;
和/或,
若使用的内存压缩算法发生变化,则清除为所述目标内存页设置的所述预设标识。
4.根据权利要求2所述的方法,其特征在于,所述当满足所述内存压缩触发条件时,将所述内存空间中不包含预设标识的内存页确定为所述目标内存页,包括:
当满足所述内存压缩触发条件时,根据内存页的活跃度从目标链表中获取候选内存页,所述目标链表中包含根据活跃度排序后的内存页;
若所述候选内存页不包含所述预设标识,则将所述候选内存页确定为所述目标内存页。
5.根据权利要求4所述的方法,其特征在于,所述若所述候选内存页不包含所述预设标识,则将所述候选内存页确定为所述目标内存页,包括:
若所述候选内存页不包含所述预设标识,且所述候选内存页不属于预设应用程序,则将所述候选内存页确定为所述目标内存页,所述预设应用程序的应用响应速度需求高于其它应用程序的应用响应速度需求。
6.根据权利要求1至5任一所述的方法,其特征在于,所述内存压缩触发条件包括剩余内存空间小于内存空间阈值,所述写入条件包括所述目标内存页的所述压缩率低于压缩率阈值;
所述根据压缩前后所述目标内存页的数据量,确定所述目标内存页的压缩率之后,所述方法还包括:
根据所述剩余内存空间确定所述压缩率阈值,所述压缩率阈值与所述剩余内存空间呈负相关关系。
7.一种内存压缩装置,其特征在于,所述装置包括:
压缩模块,用于当满足内存压缩触发条件时,对内存空间中的目标内存页进行内存压缩,得到压缩后的所述目标内存页;
第一确定模块,用于根据压缩前后所述目标内存页的数据量,确定所述目标内存页的压缩率;
写入模块,用于若所述压缩率指示所述目标内存页满足写入条件,则将压缩后的所述目标内存页写入所述内存空间中的内存压缩空间;
停止写入模块,用于若所述压缩率指示所述目标内存页不满足所述写入条件,则停止将所述目标内存页写入所述内存压缩空间。
8.根据权利要求7所述的装置,其特征在于,所述压缩模块包括:
确定单元,用于当满足所述内存压缩触发条件时,将所述内存空间中不包含预设标识的内存页确定为所述目标内存页,所述预设标识用于指示内存页不满足所述写入条件;
压缩单元,用于对所述目标内存页进行内存压缩,得到压缩后的所述目标内存页;
所述装置还包括:
标识模块,用于若所述压缩率指示所述目标内存页不满足所述写入条件,则为所述目标内存页设置所述预设标识。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第一清除模块,用于若所述目标内存页的数据发生变化,则清除为所述目标内存页设置的所述预设标识;
和/或,
第二清除模块,用于若使用的内存压缩算法发生变化,则清除为所述目标内存页设置的所述预设标识。
10.根据权利要求8所述的装置,其特征在于,所述确定单元还用于:
当满足所述内存压缩触发条件时,根据内存页的活跃度从目标链表中获取候选内存页,所述目标链表中包含根据活跃度排序后的内存页;
若所述候选内存页不包含所述预设标识,则将所述候选内存页确定为所述目标内存页。
11.根据权利要求10所述的装置,其特征在于,所述确定单元还用于:
若所述候选内存页不包含所述预设标识,且所述候选内存页不属于预设应用程序,则将所述候选内存页确定为所述目标内存页,所述预设应用程序的应用响应速度需求高于其它应用程序的应用响应速度需求。
12.根据权利要求7至11任一所述的装置,其特征在于,所述内存压缩触发条件包括剩余内存空间小于内存空间阈值,所述写入条件包括所述目标内存页的所述压缩率低于压缩率阈值;
所述装置还包括:
第二确定模块,用于根据所述剩余内存空间确定所述压缩率阈值,所述压缩率阈值与所述剩余内存空间呈负相关关系。
13.一种终端,所述终端包括处理器和存储器;所述存储器存储有至少一条指令,所述至少一条指令用于被所述处理器执行以实现如权利要求1至6任一所述的内存压缩方法。
14.一种计算机可读存储介质,其特征在于,所述存储介质存储有至少一条指令,所述至少一条指令用于被处理器执行以实现如权利要求1至6任一所述的内存压缩方法。
CN201910769746.1A 2019-08-20 2019-08-20 内存压缩方法、装置、终端及存储介质 Active CN110457235B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910769746.1A CN110457235B (zh) 2019-08-20 2019-08-20 内存压缩方法、装置、终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910769746.1A CN110457235B (zh) 2019-08-20 2019-08-20 内存压缩方法、装置、终端及存储介质

Publications (2)

Publication Number Publication Date
CN110457235A true CN110457235A (zh) 2019-11-15
CN110457235B CN110457235B (zh) 2021-10-08

Family

ID=68487970

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910769746.1A Active CN110457235B (zh) 2019-08-20 2019-08-20 内存压缩方法、装置、终端及存储介质

Country Status (1)

Country Link
CN (1) CN110457235B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110895492A (zh) * 2019-12-11 2020-03-20 Oppo(重庆)智能科技有限公司 设备控制方法、装置、存储介质及电子设备
CN111352861A (zh) * 2020-02-19 2020-06-30 Oppo广东移动通信有限公司 内存压缩方法、装置及电子设备
CN111367828A (zh) * 2020-02-27 2020-07-03 Oppo广东移动通信有限公司 内存压缩方法、装置、终端及存储介质
CN111949564A (zh) * 2020-08-13 2020-11-17 青岛海信传媒网络技术有限公司 一种内存交换方法及显示设备
CN112069433A (zh) * 2020-09-10 2020-12-11 Oppo(重庆)智能科技有限公司 文件页面处理方法、装置、终端设备以及存储介质
CN112540984A (zh) * 2020-11-23 2021-03-23 成都佳华物链云科技有限公司 数据存储方法、查询方法、装置、电子设备及存储介质

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012052336A2 (en) * 2010-10-22 2012-04-26 St-Ericsson Sa Methods and devices for reducing compressed page loading time on page fault
WO2013095448A1 (en) * 2011-12-21 2013-06-27 Intel Corporationu Dram compression scheme to reduce power consumption in motion compensation and display refresh
CN103617133A (zh) * 2013-12-06 2014-03-05 北京奇虎科技有限公司 一种Windows系统中虚拟内存压缩方法和装置
US20140164686A1 (en) * 2012-12-11 2014-06-12 JinHyuck Choi Mobile device and method of managing data using swap thereof
CN103970256A (zh) * 2014-04-22 2014-08-06 中国科学院计算技术研究所 一种基于内存压缩和cpu动态调频的节能方法及系统
CN104281528A (zh) * 2013-07-09 2015-01-14 浙江大华技术股份有限公司 一种数据存储方法及装置
US20150301946A1 (en) * 2014-04-16 2015-10-22 Vmware, Inc. Page Compressibility Checker
US20160117116A1 (en) * 2014-10-27 2016-04-28 Mediatek Inc. Electronic device and a method for managing memory space thereof
US20160179400A1 (en) * 2014-12-19 2016-06-23 International Business Machines Corporation Method to improve page out mechanism with compressed memory pools
CN106970881A (zh) * 2017-03-10 2017-07-21 浙江大学 一基于大页的冷热页追踪及压缩回收方法
CN107562645A (zh) * 2017-08-24 2018-01-09 华为技术有限公司 一种内存页管理方法及计算设备
CN107704321A (zh) * 2017-09-30 2018-02-16 北京元心科技有限公司 内存分配的方法、装置及终端设备

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012052336A2 (en) * 2010-10-22 2012-04-26 St-Ericsson Sa Methods and devices for reducing compressed page loading time on page fault
WO2013095448A1 (en) * 2011-12-21 2013-06-27 Intel Corporationu Dram compression scheme to reduce power consumption in motion compensation and display refresh
US20140164686A1 (en) * 2012-12-11 2014-06-12 JinHyuck Choi Mobile device and method of managing data using swap thereof
CN104281528A (zh) * 2013-07-09 2015-01-14 浙江大华技术股份有限公司 一种数据存储方法及装置
CN103617133A (zh) * 2013-12-06 2014-03-05 北京奇虎科技有限公司 一种Windows系统中虚拟内存压缩方法和装置
US20150301946A1 (en) * 2014-04-16 2015-10-22 Vmware, Inc. Page Compressibility Checker
CN103970256A (zh) * 2014-04-22 2014-08-06 中国科学院计算技术研究所 一种基于内存压缩和cpu动态调频的节能方法及系统
US20160117116A1 (en) * 2014-10-27 2016-04-28 Mediatek Inc. Electronic device and a method for managing memory space thereof
US20160179400A1 (en) * 2014-12-19 2016-06-23 International Business Machines Corporation Method to improve page out mechanism with compressed memory pools
CN106970881A (zh) * 2017-03-10 2017-07-21 浙江大学 一基于大页的冷热页追踪及压缩回收方法
CN107562645A (zh) * 2017-08-24 2018-01-09 华为技术有限公司 一种内存页管理方法及计算设备
CN107704321A (zh) * 2017-09-30 2018-02-16 北京元心科技有限公司 内存分配的方法、装置及终端设备

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110895492A (zh) * 2019-12-11 2020-03-20 Oppo(重庆)智能科技有限公司 设备控制方法、装置、存储介质及电子设备
CN110895492B (zh) * 2019-12-11 2023-01-10 Oppo(重庆)智能科技有限公司 设备控制方法、装置、存储介质及电子设备
CN111352861A (zh) * 2020-02-19 2020-06-30 Oppo广东移动通信有限公司 内存压缩方法、装置及电子设备
CN111352861B (zh) * 2020-02-19 2023-09-29 Oppo广东移动通信有限公司 内存压缩方法、装置及电子设备
CN111367828A (zh) * 2020-02-27 2020-07-03 Oppo广东移动通信有限公司 内存压缩方法、装置、终端及存储介质
CN111367828B (zh) * 2020-02-27 2023-10-20 Oppo广东移动通信有限公司 内存压缩方法、装置、终端及存储介质
CN111949564A (zh) * 2020-08-13 2020-11-17 青岛海信传媒网络技术有限公司 一种内存交换方法及显示设备
CN111949564B (zh) * 2020-08-13 2024-05-17 Vidaa(荷兰)国际控股有限公司 一种内存交换方法及显示设备
CN112069433A (zh) * 2020-09-10 2020-12-11 Oppo(重庆)智能科技有限公司 文件页面处理方法、装置、终端设备以及存储介质
CN112540984A (zh) * 2020-11-23 2021-03-23 成都佳华物链云科技有限公司 数据存储方法、查询方法、装置、电子设备及存储介质
CN112540984B (zh) * 2020-11-23 2023-10-03 成都佳华物链云科技有限公司 数据存储方法、查询方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN110457235B (zh) 2021-10-08

Similar Documents

Publication Publication Date Title
CN110457235A (zh) 内存压缩方法、装置、终端及存储介质
CN105677242B (zh) 冷热数据的分离方法和装置
WO2021169677A1 (zh) 内容分享方法、装置、终端及存储介质
US11204806B2 (en) Systems and methods for user adaptive resource management
CN103294657A (zh) 文本编辑方法及系统
CN111177025B (zh) 数据存储方法、装置及终端设备
CN110069219A (zh) 一种数据存储方法、系统及电子设备和存储介质
CN104881211A (zh) 一种文件夹分类方法、系统及移动终端
CN104615546B (zh) 文件数据管理方法及装置
CN109788138A (zh) 屏幕控制方法、装置、终端及存储介质
CN106681667A (zh) 一种图片展示方法、装置及移动终端
CN111274039B (zh) 内存回收方法、装置、存储介质及电子设备
CN110609748B (zh) 一种内存分配方法、电子设备及存储介质
CN105988805A (zh) 一种应用程序的管理方法及移动终端
CN109885255A (zh) 存储空间整理方法及装置
EP2998857A1 (en) Control method and device for displaying screen background
CN108228339B (zh) 一种内存回收方法及装置、终端设备及计算机可读存储介质
CN105786399B (zh) 一种数据转存方法、装置及系统
CN110515524A (zh) 输入信息的方法、装置、终端及存储介质
CN106874438A (zh) 一种桌面文件夹合并方法及系统
CN104572485A (zh) 双系统共用内存的分配方法及装置
CN105474146A (zh) 电子装置和控制电子装置的触摸反应的方法
CN108228340A (zh) 终端控制方法及装置、终端设备及计算机可读存储介质
CN108228342A (zh) 终端设备控制方法及装置、终端设备及计算机可读存储介质
CN110851398B (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