CN112835813A - 处理内存中重复图片的方法、电子设备及存储介质 - Google Patents

处理内存中重复图片的方法、电子设备及存储介质 Download PDF

Info

Publication number
CN112835813A
CN112835813A CN202110238770.XA CN202110238770A CN112835813A CN 112835813 A CN112835813 A CN 112835813A CN 202110238770 A CN202110238770 A CN 202110238770A CN 112835813 A CN112835813 A CN 112835813A
Authority
CN
China
Prior art keywords
memory
picture
virtual address
repeated
pictures
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
CN202110238770.XA
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.)
Tencent Music Entertainment Technology Shenzhen Co Ltd
Original Assignee
Tencent Music Entertainment Technology Shenzhen 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 Tencent Music Entertainment Technology Shenzhen Co Ltd filed Critical Tencent Music Entertainment Technology Shenzhen Co Ltd
Priority to CN202110238770.XA priority Critical patent/CN112835813A/zh
Publication of CN112835813A publication Critical patent/CN112835813A/zh
Pending legal-status Critical Current

Links

Images

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/58Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/583Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Library & Information Science (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开一种处理内存中重复图片的方法,其包括:基于运行中的应用程序的第一进程生成所述应用程序的第二进程,所述第二进程具有与所述第一进程相同的虚拟地址空间和内存对象引用关系;基于所述内存对象引用关系,在所述第二进程中提取所述运行中的应用程序在所述内存中的图片对象列表;在所述第二进程中确定所述图片对象列表中的重复图片以及所述重复图片在所述虚拟地址空间中的虚拟地址;由所述第一进程得到所述重复图片的虚拟地址;基于所述第一进程所得到的所述重复图片的虚拟地址,修改所述第一进程的内存对象引用关系以使所述第一进程中的重复图片的虚拟地址合并引用内存中的同一对象。本申请还公开一种电子设备和存储介质。

Description

处理内存中重复图片的方法、电子设备及存储介质
技术领域
本申请涉及计算机技术领域,具体地涉及一种处理内存中重复图片的方法和装置。本申请还涉及相关的电子设备及存储介质。
背景技术
当前,以智能手机等为代表的计算机终端设备得到了广泛使用。在这些终端设备中安装的应用程序(APP)功能也愈发强大。因此,终端设备中的应用程序业务往往面临着内存消耗量巨大的痛点。特别是,应用程序在运行时调用的大量图片往往占据很大一部分宝贵的内存资源。在很多情况下,这些占用内存资源的图片往往是应用程序在运行时重复分配的相同图片。
为了保证终端设备的正常使用,当前的终端设备操作系统、例如安卓(Android)系统往往能主动或被动地进行内存清理。但是,内存清理的作用是保证终端设备的基本使用而不至于崩溃,这往往是以影响应用程序意图提供的丰富使用体验为代价的。
另外,一些终端设备操作系统、例如安卓(Android)系统还提供了图片内存空间复用功能,即当为图片A开辟的连续内存空间不再使用的情况下,能够给另外的图片B去使用,以便提高内存资源的利用。然而,该功能并不能解决应用程序运行时分配多个相同图片资源而造成的浪费问题。
因此,当前存在这样的需求,即通过有效处理占用大量内存资源的重复图片来优化计算机的内存使用情况。
本背景技术描述的内容仅为了便于了解本领域的相关技术,不视作对现有技术的承认。
发明内容
因此,本发明实施例意图提供一种处理内存中重复图片的方法和装置以及相关的电子设备和存储介质,其能够有效应对应用程序运行时重复分配的大量相同图片带来的内存资源浪费的问题。
在第一方面,提供一种处理内存中重复图片的方法,其包括:
基于运行中的应用程序的第一进程生成所述应用程序的第二进程,所述第二进程具有与所述第一进程相同的虚拟地址空间和内存对象引用关系;
基于所述内存对象引用关系,在所述第二进程中提取所述运行中的应用程序在所述内存中的图片对象列表;
在所述第二进程中确定所述图片对象列表中的重复图片以及所述重复图片在所述虚拟地址空间中的虚拟地址;
由所述第一进程得到所述重复图片的虚拟地址;
基于所述第一进程所得到的所述重复图片的虚拟地址,修改所述第一进程的内存对象引用关系以使所述第一进程中的重复图片的虚拟地址合并引用内存中的同一对象。
在第二方面,提供一种处理内存中重复图片的装置,其包括:
生成单元,配置成基于运行中的应用程序的第一进程生成所述应用程序的第二进程,所述第二进程具有与所述第一进程相同的虚拟地址空间和内存对象引用关系;
提取单元,配置成基于所述内存对象引用关系,在所述第二进程中提取所述运行中的应用程序在所述内存中的图片对象列表;
确定单元,配置成在所述第二进程中确定所述图片对象列表中的重复图片以及所述重复图片在所述虚拟地址空间中的虚拟地址;
获取单元,配置成由所述第一进程得到所述重复图片的虚拟地址;
合并引用单元,配置成基于所述第一进程所得到的所述重复图片的虚拟地址,修改所述第一进程的内存对象引用关系以使所述第一进程中的重复图片的虚拟地址合并引用内存中的同一对象。
在第三方面,提供一种电子设备,其包括:处理器和存储有计算机程序的存储器,所述处理器被配置为在运行计算机程序时执行任一本发明实施例的方法。
在第四方面,提供一种存储介质,存储有计算机程序,所述计算机程序配置成被运行时执行任一本发明实施例的方法。
根据本发明实施例的方案总体而言涉及内存优化的方法及相关装置、设备或存储介质,根据本发明实施例的方案尤其适用于如移动终端设备,例如使用移动操作系统、如安卓或iOS系统的终端设备;更具体地,根据本发明实施例的方案涉及在所述移动操作系统下运行的应用程序所占用内存的优化。
在此,根据本发明实施例的方案由运行的应用程序的第一进程、通常是主进程生成第二进程、通常是子进程,由此第二进程复制了第一进程的虚拟地址空间,并获得了第一进程的内存对象引用关系;在此基础上,提取内存中的图片对象、例如位图BITMAP对象,并识别其中的重复图片;最后借此修改第一进程的内存对象引用关系,以便合并引用内存中的同一对象。根据本发明实施例的方案能够能提供极为高效的避免重复图片带来的内存资源浪费的问题,由此大幅度优化了内存使用,而且还避免了重复图片的合并回收处理影响应用程序的使用体验。
在根据本发明实施例的进一步方案中,可以通过对应用程序调用的图片类型对象的数据、更具体而言是字节流采用散列函数方法实现了高效、准确的内存图片对象的实时识别。
本发明实施例的其他可选特征和技术效果一部分在下文描述,一部分可通过阅读本文而明白。
附图说明
以下,结合附图来详细说明本发明的实施例,所示出的元件不受附图所显示的比例限制,附图中相同或相似的附图标记表示相同或类似的元件,其中:
图1示出了根据本发明实施例的方法的第一示意性流程图;
图2示出了根据本发明实施例的方法的第二示意性流程图;
图3示出了根据本发明实施例的方法的第三示意性流程图;
图4示出了根据本发明实施例的方法的第四示意性流程图;
图5示出了根据本发明实施例的装置的结构示意图;
图6示出了根据一个示意性实例的第一示意图;
图7示出了根据所述示意性实例的第二示意图;
图8示出了根据所述示意性实例的第三示意图;
图9示出了根据本发明实施例的应用程序的进程示意图;
图10示出了根据本发明实施例的电子设备的硬件结构示意图;
图11示出了根据本发明实施例的电子设备的操作系统示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合具体实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
本发明实施例提供一种例如用于计算机、如终端设备、例如移动终端的内存优化方案,尤其是用于在内存中重复调用或分配图片的应用程序进程情形下的内存优化方案。具体地,本发明实施例涉及一种处理内存中重复图片的方法。具体而言,该方法尤其在运行重复调用或分配图片的应用程序情形下通过生成复制应用程序运行的第一进程的第二进程,并在第二进程中确认内存重复图片时,对应地在第一进程中合并引用图片对象,以消除重复图片的引用,并达到减少内存浪费之效果。此外,本发明实施例还相应地涉及对应的装置以及实施上述方法的计算机系统和存储有可执行上述方法的程序的存储介质。在一些实施例中,装置、部件、单元或模型可以由软件、硬件或软硬件结合实现。
在本发明的一些实施例中,所述应用程序(APP)可以为不同类型的APP,包括但不限于:音乐APP、社交APP、直播APP、购物APP、视频APP等。在一些实施例中,所述应用程序优选为大量重复分配相同图片而占据大量内存的应用程序。
在本发明实施例中,所述内存具有正常理解的含义,也可称作主存。在本发明的实施例中,尤其是在终端设备、如移动终端设备的情形下,所述内存包括随机访问存储器(RAM),但不含集成在处理器中的高速缓存(Cache)和作为(处理器不可直接读取的)非易失性存储器或闪存,其通常被称为ROM。在一些实施例中,所述内存包括动态RAM(DRAM)。这将在下文结合图10所示的电子设备硬件结构示意图进一步描述。
在本发明实施例中,所述图片为数字图片(图像),可包括位图(Bitmap)和矢量图。在一个优选的实施例中,所述图片为位图(Bitmap)类型。位图(Bitmap)即二进制图(BinaryMap),又可称为像素图或栅格图,它是通过记录图像中每一个点的颜色、深度、透明度等信息来存储和显示图像。Bitmap图片可包括多种格式,包括但不限于BMP、JPG、GIF和PNG格式等。在本发明实施例中,可以采用多种方式实现所述图片格式的识别,例如同时读取属性文件或表征文件格式的字节。
在本发明实施例中,所述重复图片包括由应用程序在运行时重复分配的相同图片,其占用了多个(物理)内存空间,因而造成了内存开销,尤其涵盖被多个对象引用的多个相同图片,而这些相同图片分别位于不同的(物理)内存地址的情形。
参考图1,所述处理内存中重复图片的方法,可包括步骤S101至S105。
S101:基于运行中的应用程序的第一进程生成所述应用程序的第二进程,所述第二进程具有与所述第一进程相同的虚拟地址空间和内存对象引用关系。
在一些实施例中,根据本发明所述的处理内存重复图片的方法是受触发而启动的。
在一个具体实施例中,可以通过检测内存状态,当内存状态到达预设阈值条件时就触发重复图像合并回收。
例如,在图2所示的实施例中,所述步骤S101可包括:
S201:检测内存状态是否符合预设阈值条件;
S202:响应于所述内存状态符合所述预设阈值条件,生成所述第二进程。
在一些实施例中,检测所述内存状态可以是基于电子设备的整体内存。在替代的优选实施例中,检测所述内存状态可以是基于运行的应用程序的(主)进程占用(拉取)的内存或剩余内存,在此可简称应用内存或应用剩余内存。例如,所述内存状态优选为第一进程的内存状态,如第一进程的剩余内存状态。在一些实施例中,预设阈值条件可以是剩余内存量或比例。例如,可以以应用剩余内存小于10%,即应用运行时的进程能拉取的最大内存中未占用部分小于10%为界限。
作为替代实施例,所述处理内存重复图片的方法或者说重复图像合并回收可以是定期执行的,或者两者相结合。例如,在一个优选实施例中,可以在N个时钟时间定期判断是否执行所述重复图片合并回收,并在符合预设条件时执行;并且可选地,在非周期时间内,如果符合另外的预设条件,如更低的剩余内存时,也可触发执行。
在本发明实施例中,进程具有正常理解的含义。
在一个具体实施例中,可以借助fork函数创建所述第二进程。在此,第一进程为主进程或父进程,第二进程为子进程。
具体地,所述基于运行中的应用程序的第一进程生成所述应用程序的第二进程,可包括:
A1:由所述第一进程调用fork函数以创建所述第二进程。
当主进程通过调用fork函数创建新运行的所述子进程时,子进程复制了主进程或父进程的整个虚拟地址空间,即子进程得到与父进程虚拟地址空间相同(但是独立的)一份副本,或者可以说两者具有相同但独立的地址空间,但是虚拟地址空间所对应的物理内存却没有复制。在调用执行fork函数时,两个进程可以具有相同的用户栈、相同的本地变量值、相同的堆、相同的全局变量值以及相同的代码。此时,主进程和子进程中变量x对应的虚拟地址和物理地址都相同。相应地,两个进程具有相同的所述内存对象引用关系。在此,主进程和子进程可以具有不同的进程标示(PID)。
在此,例如参考图6,示出了根据一个示例性实例的示意图。由于子进程复制了主进程或父进程的整个虚拟地址空间,进而可以具有相同的虚拟内存地址和物理内存地址的映射关系(在执行fork函数后),所述映射关系可以呈页表形式。页表可以允许操作系统、处理器中的内存管理单元(MMU)中的地址翻译单元获取两个进程的虚拟内存地址与物理内存地址的对应映射关系。在此,主进程和子进程(在执行fork函数后)可具有相同、但独立的虚拟地址空间。在此情况下,可以在第二进程、如子进程中确定内存中所有的图片类型对象(同样也是第一进程、如父进程中的图片类型对象)。
在图6所示的示例中,以虚拟内存分割成的N个连续字节大小的虚拟页(VP)作为示意性的虚拟地址空间单元;相应地,以物理内存(在此同时用于主进程和子进程)中分割出的M个连续字节大小的物理页(PP)作为示意性的物理地址空间单元,并示意性表示两者之间的映射(例如以页表形式)。在此,下文将以每页表征一个(图片)对象或数据的存储空间,但可以想到这只是为了便于具体化本发明示例的示意性定义,而不构成真实运行状态的限制。如图6所示,主进程和子进程(在fork后)的虚拟地址空间和物理地址空间(页)的映射如下:VP1→PP2,VP2→PP5,VP3→PP7,VP4→PP8,VP5→PP11,VP6→PP12。
之后,父进程和子进程对本地变量x进行的改变(如有)是独立的,不会反应至另一进程的(物理)内存空间中。在一些实施例中,可称为“写时复制”,即等到各进程虚拟地址空间被写时,对应的物理内存空间被复制,此时父子进程中变量x对应的虚拟地址还是相同的,但是物理地址不同。
S102:基于所述内存对象引用关系,在所述第二进程中提取所述运行中的应用程序在所述内存中的图片对象列表;
如图3所示的实施例中,所述步骤S102可包括:
S301:基于所述内存对象引用关系,在所述第二进程中转储(DUMP)所述运行中的应用程序的内存信息;
在此,例如当第一进程、如主进程通过调用fork函数创建子进程而使得子进程具有与主进程相同的内存对象引用关系之后,可以借助于转储(DUMP)功能,在第二进程、如子进程中转储第一进程、如主进程的内存信息。尤其是,在子进程中可以转储(与第一进程相同的)应用程序堆(APP Heap)。例如在采用Java虚拟机(JVM)的操作系统、如安卓系统(如下文参考图11所述)的终端、如移动终端中,可以借助于所述堆转储而获得程序进程的内存堆快照。
S302:检测所述第二进程中转储的内存信息中的数据格式,以确定所述内存中所有图片对象;
借助于所述内存信息,所述第二进程可以确定第一进程内存中(执行fork时)的内存信息中的所有图片对象。
S303:针对所述内存中所有图片对象,生成所述图片对象列表。
在这些实施例中,所述图片对象列表可以时从页表中获取的数据或呈页表的变形形式,其可以允许操作系统、处理器中的内存管理单元(MMU)中的地址翻译单元获取第一进程中重复图片的虚拟内存地址与物理内存地址的对应映射关系。作为解释而非限制地,这可用于第一进程、如主进程将多个重复图片的对象引用合并引用同一图片对象,如下文进一步说明。作为示意性举例,假设上述VP1至VP6映射的物理地址(页)中分别有所有图片对象(字节流),则可以获得上述虚拟内存地址(VP1至VP6)和物理内存地址(PP2、PP5、PP7、PP8、PP11、PP12)及其映射的图片对象列表,其可以呈由页表获取的数据形式或页表的变形形式。
在所述的实施例中,作为解释而非限制地,由于第一和第二进程(在生成第二进程时,例如在fork时)具有相同的虚拟空间地址及内存对象引用关系,可以确定运行的APP的第一进程(在生成第二进程时,例如在fork时)中的所有指定类型的文件,在此为图片类型文件,并由此可以获得对象列表,包含上述的虚拟内存地址和物理内存地址及其映射关系。
在此实施例中,更准确地讲,所述运行中的应用程序在所述内存中的图片对象列表为第一进程的内存中的图片对象列表(在生成第二进程时,例如在fork时),而第二进程例如通过生成、复制(如fork)而具有相同的内存信息。
S103:在所述第二进程中确定所述图片对象列表中的重复图片以及所述重复图片在所述虚拟地址空间中的虚拟地址;
作为示意性举例,例如参考图7所示的示意图中。例如可以确定VP1(PP2)、VP3(PP7)、VP4(PP8)和VP6(PP11)中有重复图片,被重复分配的相同图片。由此,在子进程中可以确定出这些重复图片,并相应确定其虚拟内存地址。作为解释而非限制地,在所述实施例中获取重复图片的虚拟内存地址是可以避免例如前述“写时复制”的影响。在图7所示的示例中,仍示出两个进程具有相同的物理内存地址是为了便于描述和理解,但在本发明实施例中并不必然如此。
在本发明的多个实施例中,可以通过多种方式确定内存(在此为转储的内存信息)中重复图片。
在一个优选的实施例中,可以通过散列函数,即哈希函数的方法确定重复图片。在一些实施例中,也可以称为“数字指纹”方法。
例如,在图4所示的实施例中,所述步骤S103可包括:
S401:利用散列函数对所述图片对象列表中的各图片对象的字节流进行处理以获得各图片对象的散列值;
S402:比较所述各图片对象的散列值是否相同以确定所述重复图片;
S403:生成所述重复图片对应的虚拟地址列表。
在更具体的实施例中,所述散列函数方法是基于MD5算法的。作为解释而非限制地,MD5信息摘要算法(MD5 Message-Digest Algorithm)属于密码散列函数,其可以产生出一个128位(16字节)的散列值(hash value),在此也可以简称为MD5值,用于确保信息传输完整一致。
在本发明的一些实施例中,可以采用其他的方法确定重复图片。
在一个优选的实施例中,在实施所述确定重复图片步骤之前,可以采用预处理、如预分组步骤。
例如,在Bitmap图片类型中,可以通过获取图片属性来对图片进行分组。在一个优选实施例中,例如可以通过图片尺寸,例如基于图片的宽高属性(如mWindth,mHeight)进行分组,从而具有相同属性的图片可被分为一组,以便例如减少利用散列函数方法确定重复图片占用的(子进程)内存开销。在一些实施例中,基于分组的重复图片确定还可以附加引入阈值标准,例如当大于预设阈值的分组才进行图片查重,这可以极大地减少图片查重工作量,并减小内存开销。
例如,所述方法还可以包括:
B1:基于预设的图片对象属性、如图片对象的宽高属性,对所述内存中所有图片对象进行分组,以使得具有相同图片对象属性、如图片对象的宽高属性的图片对象被分为一组。
可选地,所述步骤S103可包括:
B2:在符合预设的阈值标准的图片对象组中确定所述重复图片。
在一些实施例中,所述预处理、如预分组步骤可与之前的步骤相结合。
例如,前述步骤S303可以包括上述步骤B1,而S304可具体包括:
B3:针对所述内存中所有图片对象,生成多个所述图片对象列表,其中每个图片对象列表对应一组图片对象。
S104:由所述第一进程得到所述重复图片的虚拟地址;
在此,参考图8的示例,并结合图9的流程示意图,第一进程可以得到由第二进程中确定的重复图片的虚拟地址,例如VP1(PP2)、VP3(PP7)、VP4(PP8)和VP6(PP11)。
S105:基于所述第一进程所得到的所述重复图片的虚拟地址,修改所述第一进程的内存对象引用关系以使所述第一进程中的重复图片的虚拟地址合并引用内存中的同一对象。
在此,继续参考图8的示例,在第一进程得到由第二进程中确定的重复图片的虚拟地址后,即可以使得第一进程中的重复图片的虚拟地址合并引用。在所示的示例中,可以明白,仅为了易于解释的目的,图8的示例仅示意性描述了修改第一进程中的虚拟内存和物理内存的映射关系,例如将VP3→PP7,VP4→PP8和VP6→PP12的映射修改为VP3、VP4、VP6均映射PP2,而VP1→PP2的映射保持不变。在一些实施例中,可消除多余对象引用。
在一些优选的实施例中,所述合并引用的对象是经选择的。在一个优选的实施例中,可以基于最小化或者说局部性、如空间局部性来选择所合并引用至的对象。
例如,在一些实施例中,所述步骤S105可包括:
C1:如此选择被合并引用的所述同一对象,以使得所述第一进程、如主进程在后续的执行过程中调用所述同一对象的(虚拟和/或物理)内存空间距离最小化。
在一些实施例中,所述方法还可以包括:
D1:在修改所述第一进程的内存对象引用关系以使所述第一进程中的重复图片的虚拟地址合并引用内存中的同一对象后,回收所述内存中不再被引用的重复图片对象的空间。
但可以想到,在一些实施例中,根据本发明的方法可以不回收所述内存中不再被引用的重复图片对象的空间;而例如在已经消除重复图片对象引用的情况下,藉由操作系统、如安卓系统自由的回收机制回收所述空间。
在此,参考图8的示例,示意性表示了PP7、PP8和PP12的空间已被回收。
在一些实施例中,所述方法还可以包括:
E1:在所述第一进程得到所述重复图片的虚拟地址后,终止所述第二进程。
在此,参考图8的示例,并结合图9的流程示意图,可以在第一进程得到所述重复图片的虚拟地址后终止所述第二进程、如子进程(以虚线示意性表示第二进程被销毁),以减少(设备)内存开销。在一些实施例中,如图9所示,可以调用退出(exit)函数终止子进程,而主进程继续进行。
本领域技术人员将明白,在根据本发明实施例的方法中,所述终止是可选的。
由此,在本发明的实施例中,通过独立创建一个复制了虚拟内存地址空间并具有相同的内存对象引用关系的第二进程、如子进程,并以此来确定重复图片的方案,能够避免处理重复图片以回收内存对于不当地影响使用应用程序的主进程的运行,而且也避免了不利地占用主进程拉取的内存空间,其往往是非常宝贵的。由此,根据本发明实施例的方案虽然看上去暂时增大了系统层面上的内存消耗,但是应用程序的使用体验有明显提升。
在本发明的一些实施例中,如图5所示,还提供一种处理内存中重复图片的装置500,其例如可以是用于终端设备。所述装置500可包括生成单元501、提取单元502、确定单元503、获取单元504、合并引用单元505。
在所示的实施例中,所述生成单元501可配置成基于运行中的应用程序的第一进程生成所述应用程序的第二进程。在一些实施例中,所述第二进程具有与所述第一进程相同的虚拟地址空间和内存对象引用关系。在所示的实施例中,所述提取单元502可配置成基于所述内存对象引用关系,在所述第二进程中提取所述运行中的应用程序在所述内存中的图片对象列表。在所示的实施例中,所述确定单元503可配置成在所述第二进程中确定所述图片对象列表中的重复图片以及所述重复图片在所述虚拟地址空间中的虚拟地址。在所示的实施例中,所述获取单元504可配置成由所述第一进程得到所述重复图片的虚拟地址。在所示的实施例中,所述合并引用单元505可配置成基于所述第一进程所得到的所述重复图片的虚拟地址,修改所述第一进程的内存对象引用关系以使所述第一进程中的重复图片的虚拟地址合并引用内存中的同一对象。
本领域技术人员将明白,在不引起矛盾的情况下,本实施例的装置可以结合其他实施例所述的方法特征,反之则反。
在本发明的实施例中提供了一种电子设备、尤其是终端设备在本发明的一个优选实施例中,所述设备为移动终端,优选可以为手机。仅作为示例性的实现方案,图10示出了终端设备、如移动终端1000的一个具体实施例的硬件结构示意图;而图11示出了终端设备、如移动终端的一个具体实施例的系统结构示意图。
在所示出的实施例中,移动终端1000可以包括处理器1001、RAM1010、ROM1012、通用串行总线(USB)接口1013、充电管理模块1014、电源管理模块1015、电池1016、移动通信模块1040、无线通信模块1042、天线1039和1041、音频模块1034、扬声器1035、受话器1036、麦克风1037、耳机接口1038、按键1009、马达1008、指示器1007、用户标识模块(SIM)卡接口1011、显示屏1005、摄像装置1006,以及传感器模块1020等。
可以理解的是,本申请实施例示意的结构并不构成对移动终端1000的具体限定。在本申请另一些实施例中,移动终端1000可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
在一些实施例中,处理器1001可以包括一个或一个以上处理单元。在一些实施例中,处理器1001可以包括以下之一或以下至少两种的组合:应用处理器(AP)、调制解调处理器、基带处理器、图形处理器(GPU)、图像信号处理器(ISP)、控制器、存储器、视频编解码器、数字信号处理器(DSP)、基带处理器、神经网络处理器(NPU)等。不同的处理单元可以是独立的器件,也可以集成在一个或一个以上处理器中。
控制器可以是移动终端1000的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器中的存储器为高速缓冲存储器(Cache)1019。
数字信号处理器(ISP)用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。
在一些实施例中,处理器1001可以包括一个或一个接口。接口可以包括集成电路(I2C)接口、集成电路内置音频(I2S)接口、脉冲编码调制(PCM)接口、通用异步收发传输器(UART)接口、移动产业处理器接口(MIPI)、通用输入输出(GPIO)接口、用户标识模块(SIM)接口、通用串行总线(USB)接口等。
在本发明实施例中,RAM1010是与处理器直接交换数据的内部存储器。尤其例如在移动终端、如智能手机的语境下,在一些实施例中,内存可以为或包括RAM 1010;根据具体情况,在本发明的一些实施例中,RAM可以与(物理)内存或主存互换使用。在本发明的一些实施例中,尤其例如在移动终端、如智能手机的语境下,RAM1010可以为低功耗内存技术(LPDDR)类型的。
本领域技术人员将明白,尤其例如在移动终端、如智能手机的语境下,在一些实施例中,RAM1010和ROM1012可以与处理器1001集成,以形成系统级芯片(SoC)构造。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对移动终端的结构限定。在本申请另一些实施例中,移动终端也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
移动终端1000的无线通信功能可以通过天线1039和1041、移动通信模块1040、无线通信模块1042、调制解调处理器或基带处理器等实现。
移动终端1000可以通过音频模块、扬声器、受话器、麦克风、耳机接口,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。
麦克风用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风发声,将声音信号输入到麦克风。
传感器模块1020可包括下述传感器中的一个或多个:
压力传感器1023配置为感受压力信号,将压力信号转换成电信号。
气压传感器1024用于测量气压。
磁传感器1025包括霍尔传感器。
陀螺仪传感器1027可以用于确定移动终端1000的运动姿态。
加速度传感器1028可检测移动终端1000在各个方向上加速度的大小。
距离传感器1029可配置为测量距离。
接近光传感器1021可以包括例如发光二极管(LED)和光检测器,例如光电二极管。
环境光传感器1022用于感知环境光亮度。
指纹传感器1031可配置为采集指纹。
触摸传感器1032可以设置于显示屏,由触摸传感器与显示屏组成触摸屏,也称“触控屏”。触摸传感器用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定根据本发明实施例所述的触摸事件类型,例如单击、双击、长按、旋转、滑动、缩放等等。
骨传导传感器1033可以获取振动信号。
电子设备(计算机)、如移动终端的软件操作系统可以采用分层架构、事件驱动架构、微核架构、微服务架构或云架构。
本文所示的实施例以分层架构的分别以安卓操作系统平台为例,示例性说明移动终端的软件结构。但可以想到,本文的实施例可以在不同的软件操作系统中实施。
图11是安卓操作系统结构示意图,本发明实施例的方案可以采用安卓操作系统。分层架构将软件分成若干个层,层间通过软件接口通信。在一些实施例中,将安卓系统分为四层,从上至下分别为应用程序层1110、应用程序框架层1120、安卓运行时(Runtime)和系统库1130、以及内核层1140。
应用程序层1110可以包括一系列应用程序包。
应用程序框架层1120为应用程序层的应用程序提供应用编程接口(API)和编程框架。应用程序框架层包括一些预先定义的函数。
窗口管理器用于管理窗口程序。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供移动终端的通信功能。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。
安卓Runtime(运行时)包括核心库和虚拟机,安卓Runtime负责安卓系统的调度和管理。核心库包含两部分:一部分是java语言要调用的功能函数,另一部分是安卓的核心库。应用程序层和框架层运行在虚拟机中。
系统库可以包括多个功能模块。表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。
内核层1140是硬件和软件之间的层。内核层可包含显示驱动、摄像头驱动、音频接口、传感器驱动、电源管理和GPS接口。
在本发明的一些实施例中,还可以提供一种计算机系统,其包括:处理器和存储有计算机程序的存储器,所述处理器被配置为在运行计算机程序时执行任一本发明实施例的方法。
在本发明上述或下述实施例阐明的系统、装置、模块或单元,可以由计算机或其关联部件实现。根据具体情况,计算机例如可以为移动终端、智能电话、个人计算机(PC)、膝上型计算机、车载人机交互设备、个人数字助理、媒体播放器、导航设备、游戏控制台、平板电脑、可穿戴设备、智能电视、物联网系统、智能家居、工业计算机或者其组合。
在本发明的一些实施例中,还可以提供一种存储介质。在一些实施例中,所述存储介质存储有计算机程序,所述计算机程序配置成被运行时执行任一本发明实施例所述的方法。
在本发明的该实施例的存储介质可包括永久性和非永久性、可移动和非可移动的可以由任何方法或技术来实现信息存储的物品。存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
在本发明的实施例的方法、程序、系统、装置等,可以在单个或多个连网的计算机中执行或实现,也可以在分布式计算环境中实践。在本说明书实施例中,在这些分布式计算环境中,可以由通过通信网络而被连接的远程处理设备来执行任务。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本领域技术人员可想到,上述实施例阐明的功能模块/单元或控制器以及相关方法步骤的实现,可以用软件、硬件和软/硬件结合的方式实现。
除非明确指出,根据本发明实施例记载的方法、程序的动作或步骤并不必须按照特定的顺序来执行并且仍然可以实现期望的结果。在某些实施方式中,各步骤的多任务处理和并行/合并处理也是可以的或者可能是有利的。
在本文中,“第一”、“第二”是用于在同一实施例中区分不同的元件,不指代顺序或相对重要性。
在本文中,针对本发明的多个实施例进行了描述,但为简明起见,各实施例的描述并不是详尽的,各个实施例之间相同或相似的特征或部分可能会被省略。在本文中,“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”意指适用于根据本发明的至少一个实施例或示例中,而非所有实施例。上述术语并不必然意味着指代相同的实施例或示例。在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
已参考上述实施例具体示出并描述了本发明的示例性系统及方法,其仅为实施本系统及方法的最佳模式的示例。本领域的技术人员可以理解的是可以在实施本系统及/或方法时对这里描述的系统及方法的实施例做各种改变而不脱离界定在所附权利要求中的本发明的精神及范围。

Claims (10)

1.一种处理内存中重复图片的方法,其特征在于,包括:
基于运行中的应用程序的第一进程生成所述应用程序的第二进程,所述第二进程具有与所述第一进程相同的虚拟地址空间和内存对象引用关系;
基于所述内存对象引用关系,在所述第二进程中提取所述运行中的应用程序在所述内存中的图片对象列表;
在所述第二进程中确定所述图片对象列表中的重复图片以及所述重复图片在所述虚拟地址空间中的虚拟地址;
由所述第一进程得到所述重复图片的虚拟地址;
基于所述第一进程所得到的所述重复图片的虚拟地址,修改所述第一进程的内存对象引用关系以使所述第一进程中的重复图片的虚拟地址合并引用内存中的同一对象。
2.根据权利要求1所述的方法,其特征在于,所述基于运行中的应用程序的第一进程生成所述应用程序的第二进程,包括:
检测内存状态是否符合预设阈值条件;
响应于所述内存状态符合所述预设阈值条件,生成所述第二进程。
3.根据权利要求1所述的方法,其特征在于,所述基于运行中的应用程序的第一进程生成所述应用程序的第二进程,包括:
由所述第一进程调用fork函数以创建所述第二进程。
4.根据权利要求1所述的方法,其特征在于,所述基于所述内存对象引用关系,在所述第二进程中提取所述运行中的应用程序在所述内存中的图片对象列表,包括:
基于所述内存对象引用关系,在所述第二进程中转储所述运行中的应用程序的内存信息;
检测所述第二进程中转储的内存信息中的数据格式,以确定所述内存中所有图片对象;
针对所述内存中所有图片对象,生成所述图片对象列表。
5.根据权利要求1所述的方法,其特征在于,所述在所述第二进程中确定所述图片对象列表中的重复图片以及所述重复图片在所述虚拟地址空间中的虚拟地址,包括:
利用散列函数对所述图片对象列表中的各图片对象的字节流进行处理以获得各图片对象的散列值;
比较所述各图片对象的散列值是否相同以确定所述重复图片;
生成所述重复图片对应的虚拟地址列表。
6.根据权利要求1所述的方法,其特征在于,还包括:
在修改所述第一进程的内存对象引用关系以使所述第一进程中的重复图片的虚拟地址合并引用内存中的同一对象后,回收所述内存中不再被引用的重复图片对象的空间。
7.根据权利要求1所述的方法,其特征在于,还包括:
在所述第一进程得到所述重复图片的虚拟地址后,终止所述第二进程。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述图片为位图Bitmap。
9.一种电子设备,其特征在于,包括:处理器和存储有计算机程序的存储器,所述处理器被配置为在运行计算机程序时执行根据权利要求1至8中任一项所述的处理内存中重复图片的方法。
10.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序配置成被运行时执行根据权利要求1至8中任一项所述的处理内存中重复图片的方法。
CN202110238770.XA 2021-03-04 2021-03-04 处理内存中重复图片的方法、电子设备及存储介质 Pending CN112835813A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110238770.XA CN112835813A (zh) 2021-03-04 2021-03-04 处理内存中重复图片的方法、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110238770.XA CN112835813A (zh) 2021-03-04 2021-03-04 处理内存中重复图片的方法、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN112835813A true CN112835813A (zh) 2021-05-25

Family

ID=75934549

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110238770.XA Pending CN112835813A (zh) 2021-03-04 2021-03-04 处理内存中重复图片的方法、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN112835813A (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070038837A1 (en) * 2005-08-15 2007-02-15 Microsoft Corporation Merging identical memory pages
KR101614107B1 (ko) * 2015-01-09 2016-04-20 성균관대학교산학협력단 비용 효율적인 선택적 메모리 중복 제거 방법 및 장치
CN105607901A (zh) * 2015-12-11 2016-05-25 Tcl集团股份有限公司 系统内存的优化方法、装置及终端设备
US20170147240A1 (en) * 2015-11-19 2017-05-25 Red Hat Israel, Ltd. Memory deduplication protection for memory pages
CN107122247A (zh) * 2017-04-27 2017-09-01 腾讯科技(深圳)有限公司 一种静态占用图片的检测方法和装置
CN107169057A (zh) * 2017-04-27 2017-09-15 腾讯科技(深圳)有限公司 一种重复图片的检测方法和装置
WO2018072408A1 (zh) * 2016-10-18 2018-04-26 广州市动景计算机科技有限公司 一种内存分析方法、装置、系统以及计算设备
CN110515774A (zh) * 2019-08-28 2019-11-29 北京百度网讯科技有限公司 内存快照的生成方法、装置、电子设备及存储介质
CN111638952A (zh) * 2020-05-09 2020-09-08 北京达佳互联信息技术有限公司 一种内存转储方法、装置及电子设备

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070038837A1 (en) * 2005-08-15 2007-02-15 Microsoft Corporation Merging identical memory pages
KR101614107B1 (ko) * 2015-01-09 2016-04-20 성균관대학교산학협력단 비용 효율적인 선택적 메모리 중복 제거 방법 및 장치
US20170147240A1 (en) * 2015-11-19 2017-05-25 Red Hat Israel, Ltd. Memory deduplication protection for memory pages
CN105607901A (zh) * 2015-12-11 2016-05-25 Tcl集团股份有限公司 系统内存的优化方法、装置及终端设备
WO2018072408A1 (zh) * 2016-10-18 2018-04-26 广州市动景计算机科技有限公司 一种内存分析方法、装置、系统以及计算设备
CN107122247A (zh) * 2017-04-27 2017-09-01 腾讯科技(深圳)有限公司 一种静态占用图片的检测方法和装置
CN107169057A (zh) * 2017-04-27 2017-09-15 腾讯科技(深圳)有限公司 一种重复图片的检测方法和装置
CN110515774A (zh) * 2019-08-28 2019-11-29 北京百度网讯科技有限公司 内存快照的生成方法、装置、电子设备及存储介质
CN111638952A (zh) * 2020-05-09 2020-09-08 北京达佳互联信息技术有限公司 一种内存转储方法、装置及电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
尹文刚;杨斌;: "Android应用程序中的内存泄漏与规避方法", 单片机与嵌入式系统应用, no. 06, 1 June 2012 (2012-06-01), pages 10 - 12 *

Similar Documents

Publication Publication Date Title
US11344806B2 (en) Method for rendering game, and method, apparatus and device for generating game resource file
US20220292628A1 (en) Image processing method and apparatus
CN107278292B (zh) 一种虚拟机内存的映射方法、装置及数据传输设备
CN109857573B (zh) 一种数据共享方法、装置、设备及系统
US20210118087A1 (en) Watermark embedding method and apparatus, terminal, and storage medium
US9324299B2 (en) Atlasing and virtual surfaces
CN106610828B (zh) 基于Android系统的GIF动画播放方法及装置
CN116166256A (zh) 界面生成方法及电子设备
CN116166259A (zh) 界面生成方法及电子设备
CN115017534A (zh) 文件处理权限控制方法、装置及存储介质
US10679321B2 (en) Efficient release of target memory
CN112835813A (zh) 处理内存中重复图片的方法、电子设备及存储介质
CN113934340A (zh) 一种终端设备和进度条显示方法
CN116166255A (zh) 界面生成方法及电子设备
CN112231029A (zh) 应用于主题的帧动画处理方法
CN112801856A (zh) 数据处理方法和装置
CN110704157A (zh) 一种应用启动方法、相关装置及介质
WO2013185664A1 (zh) 一种操作方法及装置
CN116991600B (zh) 图形调用指令的处理方法、装置、设备及存储介质
CN114741205B (zh) 一种匿名页回收方法及电子设备
CN112925654B (zh) 图片解码方法、装置、计算机设备及存储介质
WO2023185684A1 (zh) 一种应用程序的进程查杀方法及电子设备
CN112749022B (zh) 相机资源访问方法、操作系统、终端和虚拟相机
CN116389702A (zh) 一种数据处理方法及设备
CN116467535A (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