CN113778624A - 对象的处理方法和装置、智能终端及存储介质 - Google Patents

对象的处理方法和装置、智能终端及存储介质 Download PDF

Info

Publication number
CN113778624A
CN113778624A CN202110997855.6A CN202110997855A CN113778624A CN 113778624 A CN113778624 A CN 113778624A CN 202110997855 A CN202110997855 A CN 202110997855A CN 113778624 A CN113778624 A CN 113778624A
Authority
CN
China
Prior art keywords
memory
virtual machine
target object
native
serialized
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
CN202110997855.6A
Other languages
English (en)
Other versions
CN113778624B (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.)
Guangzhou Huya Technology Co Ltd
Original Assignee
Guangzhou Huya 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 Guangzhou Huya Technology Co Ltd filed Critical Guangzhou Huya Technology Co Ltd
Priority to CN202110997855.6A priority Critical patent/CN113778624B/zh
Publication of CN113778624A publication Critical patent/CN113778624A/zh
Application granted granted Critical
Publication of CN113778624B publication Critical patent/CN113778624B/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种对象的处理方法和装置、智能终端及存储介质,其中,该对象的处理方法包括:响应于虚拟机当前的内存占用量超过第一设定阈值,将虚拟机的至少一个对象确定为目标对象,并对目标对象进行序列化处理;将序列化的目标对象通过内存管道存储至Native内存中,并删除虚拟机中的目标对象。通过上述方案,本申请的对象处理方法通过提供一内存通道,将虚拟机内存中的数据导向至Native内存,并释放虚拟机内存,从而能够有效降低虚拟机内存的压力,进而提升了相应的应用程序的运行瓶颈,也便能够有效避免因虚拟机内存不够而导致应用程序在运行中出现闪退的现象,从而能够有效提升用户的使用体验。

Description

对象的处理方法和装置、智能终端及存储介质
技术领域
本申请涉及互联网技术领域,特别是涉及一种对象的处理方法和装置、智能终端及存储介质。
背景技术
近年来,手机的物理内存通常在8G以上,但操作系统一般会将App(application,应用程序)的虚拟机内存限制在512M,而当App申请运行的程序所占用的内存大于512M时,则会出现闪退,从而极大的影响了App的运行稳定性,也即虚拟机的内存限制已然成为App运行亟待突破的瓶颈。
发明内容
本申请主要解决的技术问题是提供一种对象的处理方法和装置、智能终端及存储介质,以解决现有技术中对象的处理方法给相应的虚拟机内存带来了极大的压力,以致极大的限制了相应App运行性能的问题。
为了解决上述问题,本申请第一方面提供了一种对象的处理方法,其中,该对象的处理方法包括:响应于虚拟机当前的内存占用量超过第一设定阈值,将虚拟机的至少一个对象确定为目标对象,并对目标对象进行序列化处理;将序列化的目标对象通过内存管道存储至Native内存中,并删除虚拟机中的目标对象。
其中,响应于虚拟机当前的内存占用量超过第一设定阈值,将虚拟机的至少一个对象确定为目标对象,并对目标对象进行序列化处理的步骤,包括:获取到虚拟机中使用频率小于设定频率且占用内存大于设定内存的至少一个对象确定为目标对象。
其中,响应于虚拟机当前的内存占用量超过第一设定阈值,将虚拟机的至少一个对象确定为目标对象,并对目标对象进行序列化处理的步骤,包括:响应于虚拟机当前的内存占用量超过第一设定阈值,随机将虚拟机中的至少一个对象确定为目标对象。
其中,响应于虚拟机当前的内存占用量超过第一设定阈值,将虚拟机的至少一个对象确定为目标对象,并对目标对象进行序列化处理的步骤,包括:响应于至少一个对象等待再次运行,将等待再次运行的对象确定为目标对象。
其中,对象的处理方法包括:响应于将至少一个对象上传服务器,删除虚拟机内存中已上传的对象。
其中,将序列化的目标对象通过内存管道存储至Native内存中,并删除虚拟机中的目标对象的步骤之后,还包括:响应于虚拟机内存中存在Native指针,基于Native指针从Native内存中获取序列化的目标对象;将序列化的目标对象反序列化,以得到并运行目标对象。
其中,响应于虚拟机内存中存在Native指针,基于Native指针从Native内存中获取序列化的目标对象的步骤,包括:响应于存在有多个线程同时读取Native内存中的序列化的目标对象,将序列化的目标对象加载至其中一个线程。
其中,将序列化的目标对象通过内存管道存储至Native内存中,并删除虚拟机中的目标对象的步骤之后,还包括:响应于Native内存当前的占用量超过第二设定阈值,删除Native内存中的部分序列化的目标对象。
其中,响应于Native内存当前的占用量超过第二设定阈值,删除Native内存中的部分序列化的目标对象的步骤,包括:响应于Native内存当前的占用量超过第二设定阈值,按照存储时序或数据大小依次删除Native内存中的部分序列化的目标对象。
其中,将序列化的目标对象通过内存管道存储至Native内存中,并删除虚拟机中的目标对象的步骤之后,还包括:响应于虚拟机当前的内存占用量小于第三设定阈值,且Native内存的占用量小于第四设定阈值,关闭虚拟机至Native内存的传输通道。
为了解决上述问题,本申请第二方面提供了一种对象的处理装置,其中,该对象的处理装置包括:检测模块,用于在虚拟机当前的内存占用量超过第一设定阈值,将虚拟机的至少一个对象确定为目标对象;处理模块,用于对目标对象进行序列化处理,以将序列化的目标对象通过内存管道存储至Native内存中,并删除虚拟机中的目标对象。
为了解决上述问题,本申请第三方面提供了一种智能终端,其中,该智能终端包括相互耦接的存储器和处理器,处理器用于执行存储器中存储的程序指令,以实现如上任一项所述的对象的处理方法。
为了解决上述问题,本申请第四方面提供了一种计算机可读存储介质,其上存储有程序指令,程序指令被处理器执行时实现如上任一项所述的对象的处理方法。
本发明的有益效果是:区别于现有技术的情况,本申请的对象的处理方法在虚拟机当前的内存占用量超过第一设定阈值,能够将虚拟机的至少一个对象确定为目标对象,并对目标对象进行序列化处理,以将序列化的目标对象通过内存管道存储至Native内存中,并删除虚拟机中的目标对象,从而能够通过提供一内存通道,将虚拟机内存中的数据重定向导入至Native内存中,并释放虚拟机内存,以能够有效降低虚拟机内存的压力,进而提升了相应的应用程序的运行瓶颈,也便能够有效避免因虚拟机内存不够而导致应用程序在运行中出现闪退的现象,从而能够有效提升用户的使用体验。
附图说明
图1是现有技术中对象的处理方法的流程示意图;
图2是本申请对象的处理方法第一实施例的流程示意图;
图3是本申请对象的处理方法第二实施例的流程示意图;
图4是本申请对象的处理方法一具体实施例的流程示意图;
图5是本申请对象的处理方法又一具体实施例的流程示意图;
图6是本申请对象的处理装置一实施例的框架示意图;
图7是本申请智能终端一实施例的框架示意图;
图8是本申请计算机可读存储介质一实施例的框架示意图。
具体实施方式
发明人经长期研究发现,操作系统中的App采用的是虚拟机运行,其底层为Linux(操作系统内核)进程,以在Linux进程中能够运行Java(一门面向对象的编程语言)虚拟机,而App上层的界面、处理逻辑与交互方式都是运行在Java虚拟机中的。而操作系统会将Java虚拟机的内存限制为最大512M,但在Linux层,也即Native(计算机函数)层则没有内存大小限制,这便意味着Native内存将被限制为手机物理内存的大小(现有的旗舰智能手机的内存容量通常为8G-12G)。
在一具体的应用场景中,Monitor(显示屏)监控是每个App都在使用的系统,其需要接受App传输过来的技术数据(性能数据、成功率数据、耗时数据等),以能够一边将数据存储在Java内存中,一边将数据上报至服务器(已上报至服务器的数据会在Java内存中删除),而当上报速度大于或等于存储速度时,一切程序的运行将处于良好的状态(实际上绝大部分情况都这样)。但在开播助手项目中,在测试环境下进行压测送礼(每秒钟送礼300个)时,由于助手开播时本来就要占用大量网络带宽,则将导致上报速度低于存储速度,长时间运行后,Java内存便有可能被耗尽而崩溃。
其中,如图1所示,图1是现有技术中对象的处理方法的流程示意图。则可知,App在写入数据,也即运行相应的Java对象时,通常会基于Monitor Java内存缓存,也即占用虚拟机内存的存储空间,而随着运行的Java对象,也即写入的数据越来越多时,便将导致“Monitor Java内存缓存”的内存占用量越来越大,并在超过其存储上限时,便会发生App闪退的现象。
为了能够有效降低虚拟机的内存压力,避免App闪退现象的发生,本申请提供了一种对象的处理方法。下面结合附图和实施例,对本申请作进一步的详细描述。特别指出的是,以下实施例仅用于说明本申请,但不对本申请的范围进行限定。同样的,以下实施例仅为本申请的部分实施例而非全部实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
请参阅图2,图2是本申请对象的处理方法第一实施例的流程示意图。具体而言,可以包括如下步骤:
S11:响应于虚拟机当前的内存占用量超过第一设定阈值,将虚拟机的至少一个对象确定为目标对象,并对目标对象进行序列化处理。
随着互联网及智能终端的技术发展,基于互联网及智能终端提供的网络应用服务也变得越来越丰富。其中,对于智能终端而言,如何保证加载至智能终端的APP能够运行流畅、稳定,这是影响用户体验的一个关键点,也是影响用户使用频率和时长的一个关键因素。在本实施例中,该APP具体用于申请并运行至少一个对象,以进而能够为用户提供相应的网络服务,比如,直播APP能够申请启动至少一个java对象,以实现接收或发送虚拟礼物的执行程序。
需说明的是,在面向对象中把某一类事物所共有的属性和行为抽象出来之后就形成了一个类。而类的一个实际的例子就叫做对象。所以从上可以看出类和对象之间存在着这样一种关系:类是具有共同的属性名称和行为的一组对象的抽象,而对象则是一个类的真实的例子。
比如,java对象便是通过java类来进行创建的,通过对象才能真正的执行程序,且每个java对象会占有一定量的内存空间。
可理解的,用户具体是通过在其智能终端的虚拟机运行至少一个对象,以执行相应的程序,获得相应的网络服务。而随着运行在该虚拟机中的对象越来越多,将导致该虚拟机的内存压力也越来越大,以致会有闪退出相应的应用程序的风险。
具体地,智能终端在检测到其虚拟机当前的内存占用量超过第一设定阈值,也即运行在虚拟机中的对象占用虚拟机内存的存储空间超过设定值时,则需将其中至少一个对象确定为目标对象,比如,将其中需频繁运行,或等待再次运行,或由用户根据当前需要随机操作选取的其中的至少一个对象确定为目标对象,以进而能够对该目标对象进行序列化处理。
其中,该第一设定阈值具体是能够保证用户智能终端的虚拟机运行顺畅,而不易出现闪退现象的任一合理的数值,本申请对此不做限定。
需说明的是,虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS(Complementary Metal OxideSemiconductor,互补金属氧化物半导体)、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。
而序列化(Serialization)具体是指将对象的状态信息转换为可以存储或传输形式的过程。
可选地,该序列化采用的是jce(Java Cryptography Extension,数据代码)序列化协议,或protobuf(Google Protocol Buffer,混合语言数据标准),或json(JavaScriptObject Notation,对象简谱)等任一合理的格式,本申请对此不做限定。
可选地,该智能终端可以是计算机、平板电脑、智能手表或智能手机等任一合理的智能终端中的一种,本申请对此不做限定。
S12:将序列化的目标对象通过内存管道存储至Native内存中,并删除虚拟机中的目标对象。
可理解的,为减轻虚拟机的内存压力,在将目标对象序列化后,即可将序列化的目标对象通过预先建立的内存管道存储至智能终端的Native内存中,并删除虚拟机中的目标对象,以能够有效减轻虚拟机的内存压力。
由此可知,在现有的对象处理中,对象使用完成后,如果需要保留,则只能将其存储在虚拟机内存中,无法销毁,而这个步骤将导致对虚拟机内存的占用。
而在本实施例中,目标对象在使用完成后,如果需要保留,则是将其序列化后放到Native内存中,并删除虚拟机中的目标对象,以能够有效节省虚拟机内存的占用。
比如,用户终端的App可根据需要,将使用不频繁的数据较大的对象(如,缓存池)放入内存管道,以在节约虚拟机内存与性能损耗上达到最佳状态。此内存管道能大幅度降虚拟机内存无法申请而导致的内存溢出的问题。
需说明的是,在智能终端的Linux层,也即Native内存,通常没有内存大小的限制,这便意味着Native内存将被限制为手机物理内存的大小(现有的旗舰智能手机的内存容量通常为8G-12G),从而极大的突破了虚拟机内存不足所带来的应用程序的运行瓶颈。
上述方案,通过提供一内存通道,将虚拟机内存中的数据重定向导入至Native内存中,并释放虚拟机内存,以能够有效降低虚拟机内存的压力,进而提升了相应的应用程序的运行瓶颈,也便能够有效避免因虚拟机内存不够而导致应用程序在运行中出现闪退的现象,从而能够有效提升用户的使用体验。
进一步地,在一实施例中,上述S11具体还可以包括:获取到虚拟机中使用频率小于设定频率且占用内存大于设定内存的至少一个对象确定为目标对象。
可理解的,为有效节省对虚拟机内存的占用,用户终端的虚拟机具体是依据对象当前的使用频率及其数据大小进行目标对象的确立,以能够通过将使用频率小于设定频率,且占用内存大于设定内存的至少一个对象确定为目标对象,以重定向至Native内存中,从而减轻虚拟机的内存压力。
其中,该设定频率和设定内存具体是用户根据需要进行设定的,能够保证用户智能终端的虚拟机运行顺畅,而不易出现闪退现象的任一合理的数值,本申请对此不做限定。
进一步地,在一实施例中,上述S11具体还可以包括:响应于虚拟机当前的内存占用量超过第一设定阈值,随机将虚拟机中的至少一个对象确定为目标对象。
可理解的,为有效减轻虚拟机的内存压力,具体还可以由用户根据当前需要随机将虚拟机中的至少一个对象确定为目标对象。
进一步地,在一实施例中,上述S11具体还可以包括:响应于至少一个对象等待再次运行,将等待再次运行的对象确定为目标对象。
可理解的,为保证能够迅速的启动需再次运行的对象,并尽可能的减少频繁的重新申请对象的发生,具体还可以是将等待再次运行的对象确定为目标对象,以能够暂时进行缓存,而避免在虚拟机中运行完成后直接删除。
进一步地,在一实施例中,上述S11具体还可以包括:响应于将至少一个对象上传服务器,删除虚拟机内存中已上传的对象。
可理解的,在将至少一个对象上传至服务器后,即表明当前对象已被执行完成,便可删除虚拟机内存中已上传的对象。
进一步地,在一实施例中,上述S12之后,具体还可以包括:响应于Native内存当前的占用量超过第二设定阈值,删除Native内存中的部分序列化的目标对象。
可理解的,因Native内存也存在有内存上限的问题,为避免相应的App运行状况进一步恶化,如果Native内存的缓存空间也快被塞满时,则需考虑数据的丢弃,以能够在确定Native内存当前的占用量超过第二设定阈值时,删除Native内存中的部分序列化的目标对象,以释放部分存储空间。
其中,该第二设定阈值具体是能够保证用户智能终端的相应App运行状态良好的任一合理的数值,本申请对此不做限定。
进一步地,在一实施例中,上述S12之后,具体还可以包括:响应于Native内存当前的占用量超过第二设定阈值,按照存储时序或数据大小依次删除Native内存中的部分序列化的目标对象。
可理解的,为保证App运行状况的良好,而不塞满Native内存,在Native内存当前的占用量超过第二设定阈值时,用户终端具体可以是按照存储时序进行序列化的目标对象的删除,比如,优先删除先存储至Native内存中的一部分序列化的目标对象;或,优先删除数据较大的Native内存中的一部分序列化的目标对象。
进一步地,在一实施例中,上述S12之后,具体还可以包括:响应于虚拟机当前的内存占用量小于第三设定阈值,且Native内存的占用量小于第四设定阈值,关闭虚拟机至Native内存的传输通道。
可理解的,由于存储至内存管道中的序列化的目标对象在需要再次被调用时,存在有一定的性能损耗(损耗点:需要序列化与反序列化各一次),因而在虚拟机当前的内存占用量减小到一定量后,还需考虑是否关闭虚拟机至Native内存的传输通道。
比如,在开启内存管道使用后,当相应App的内存压力降低,比如,频繁送礼结束了或主播关播后等任一合理的情景发生而使得直播App的内存压力降低后,虚拟机内存、Native内存中的缓存数据都将降低到很小值,则需考虑是否关闭相应的内存管道使用,而这具体可由App根据性能要求及其内存要求综合考虑来进行取舍。
其中,该第三设定阈值和第四设定阈值具体是能够保证用户智能终端的相应App运行顺畅,且运算效率和性能消耗较少的任一合理的数值,本申请对此不做限定。
请参阅图3,图3是本申请对象的处理方法第二实施例的流程示意图。本实施例的对象的处理方法是图2中的对象的处理方法的一细化实施例的流程示意图,包括如下步骤:
S21:响应于虚拟机当前的内存占用量超过第一设定阈值,将虚拟机的至少一个对象确定为目标对象,并对目标对象进行序列化处理。
S22:将序列化的目标对象通过内存管道存储至Native内存中,并删除虚拟机中的目标对象。
其中,S21和S22与图2中的S11和S12相同,具体请参阅S11和S12及其相关的文字描述,在此不再赘述。
S23:响应于虚拟机内存中存在Native指针,基于Native指针从Native内存中获取序列化的目标对象。
具体地,在将序列化的目标对象通过内存管道存储至Native内存中后,当需要再次调用并运行该目标对象时,便可从虚拟机内存中查找到相应的Native指针,以能够基于该Native指针查找到序列化的目标对象具体存储至Native内存中的物理地址,从而得到该序列化的目标对象。
其中,该Native指针具体可理解为目标对象的存储物理地址的索引。
S24:将序列化的目标对象反序列化,以得到并运行目标对象。
进一步地,在得到序列化的目标对象后,便可对该序列化的目标对象进行反序列化,进而能够得到相应的目标对象,并运行该目标对象。
需说明的是,该反序列化与序列化相反。反序列化(Unserialization)具体是指将已经存储或传输的二进制数据转换为对象的过程。
进一步地,在一实施例中,上述S23具体还可以包括:响应于存在有多个线程同时读取Native内存中的序列化的目标对象,将序列化的目标对象加载至其中一个线程。
可理解的,当存在有至少两个序列化的目标对象被存储至Native内存中后,将会存在有多个线程去读取Native内存,并去上报数据,则需要要注意内存管道的线程同步问题。也即,在存在有多个线程同时读取Native内存中的序列化的目标对象,则同时只能保证将序列化的目标对象加载至其中一个线程中。
需说明的是,线程(英语:thread)是指操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
请参阅图4,图4是本申请对象的处理方法一具体实施例的流程示意图。
S31:APP写数据。
在本实施例中,用户终端的虚拟机内存具体是MonitorJava缓存,而相应的对象具体为Java对象。
具体地,用户终端的APP根据当前需求,写入相应数据,也即在MonitorJava缓存中申请并运行相应的Java对象。
S32:MonitorJava缓存是否过大。
进一步地,判断当前MonitorJava缓存的内存占用量是否过大,比如,设定一占用量阈值,以在确定当前MonitorJava缓存的内存占用量超过该占用量阈值时,则判定当前MonitorJava缓存占用量过大。
其中,如果MonitorJava缓存的内存占用量未过大,则执行S33,如果MonitorJava缓存的内存占用量过大,则执行S34。
S33:Java内存缓存。
具体地,在MonitorJava缓存的内存占用量未过大时,将相应的Java对象存储至Java内存缓存。
S34:内存管道。
S35:Native内存缓存。
而如果MonitorJava缓存的内存占用量过大时,则将该Java对象序列化后,通过相应的内存管道,存储至Native内存缓存,并删除Java内存缓存中已序列化,并重定向至Native内存缓存中的Java对象。
S36:上报数据。
进一步地,将Java内存缓存中的Java对象及Native内存缓存中的序列化的Java对象上传至服务器,并删除Java内存缓存中已上传的Java对象。
请参阅图5,图5是本申请对象的处理方法又一具体实施例的流程示意图。
S41:对象Native指针是否存在。
在本实施例中,用户终端的虚拟机内存具体是Java虚拟机内存,而相应的对象具体为Java对象。且具体是采用本申请中的对象的处理方法,比如,图2至图4所对应的任一对象的处理方法之后,当需要再次调用运行并存储至Native内存的序列化的Java对象时,便可首先查找在Java缓存中是否存在该Java对象的Native指针。
其中,如果Java虚拟机内存中不存在Native指针,则执行S42,如果Java虚拟机内存中存在Native指针,则执行S43。
S42:申请Java对象。
当Java虚拟机内存中不存在Native指针时,则重新申请一待运行的Java对象。
S43:从内存管道中取出。
而当Java虚拟机内存中存在Native指针时,通过该Native指针查找到相应的序列化的Java对象,并从内存管道中取出。
S44:对象反序列化。
对该序列化的该Java对象进行反序列化。
S45:使用Java对象。
S46:Java对象是否需要保留。
其中,该Java对象在使用完成后,判断该Java对象是否需要保留,也即以后是否还需要再次使用,而具体可由用户确定。
其中,如果Java对象需要保留,则执行S47,如果Java对象不需要保留,则执行S49。
S47:对象序列化。
将相应的Java对象序列化,以形成二进制数据流。
S48:放入内存管道。
将序列化后的Java对象放入内存管道,则此时该Java对象在Native内存中便有了一份副本。
S49:释放Java对象。
进一步地,释放Java对象,也即删除该Java对象,以能够通过释放该Java对象减少Java虚拟机内存的占用,并结束整个流程。而在下次还需要使用相应的Java对象时,便可再次从S41开始执行。
请参阅图6,图6是本申请对象的处理装置一实施例的框架示意图。该对象的处理装置51包括:检测模块511,用于在虚拟机当前的内存占用量超过第一设定阈值,将虚拟机的至少一个对象确定为目标对象;处理模块512,用于对目标对象进行序列化处理,以将序列化的目标对象通过内存管道存储至Native内存中,并删除虚拟机中的目标对象。
上述方案,通过提供一内存通道,将虚拟机内存中的数据重定向导入至Native内存中,并释放虚拟机内存,以能够有效降低虚拟机内存的压力,进而提升了相应的应用程序的运行瓶颈,也便能够有效避免因虚拟机内存不够而导致应用程序在运行中出现闪退的现象,从而能够有效提升用户的使用体验。
在一些实施例中,处理模块512具体可以用于:获取到虚拟机中使用频率小于设定频率且占用内存大于设定内存的至少一个对象确定为目标对象。
在一些实施例中,处理模块512具体可以用于:响应于虚拟机当前的内存占用量超过第一设定阈值,随机将虚拟机中的至少一个对象确定为目标对象。
在一些实施例中,处理模块512具体可以用于:响应于至少一个对象等待再次运行,将等待再次运行的对象确定为目标对象。
在一些实施例中,处理模块512具体可以用于:响应于将至少一个对象上传服务器,删除虚拟机内存中已上传的对象。
在一些实施例中,处理模块512具体可以用于:响应于虚拟机内存中存在Native指针,基于Native指针从Native内存中获取序列化的目标对象,以将序列化的目标对象反序列化,以得到并运行目标对象。
在一些实施例中,处理模块512具体可以用于:响应于存在有多个线程同时读取Native内存中的序列化的目标对象,将序列化的目标对象加载至其中一个线程。
在一些实施例中,处理模块512具体可以用于:响应于Native内存当前的占用量超过第二设定阈值,删除Native内存中的部分序列化的目标对象。
在一些实施例中,处理模块512具体可以用于:响应于Native内存当前的占用量超过第二设定阈值,按照存储时序或数据大小依次删除Native内存中的部分序列化的目标对象。
在一些实施例中,处理模块512具体可以用于:响应于虚拟机当前的内存占用量小于第三设定阈值,且Native内存的占用量小于第四设定阈值,关闭虚拟机至Native内存的传输通道。
请参阅图7,图7是本申请智能终端一实施例的框架示意图。该智能终端61包括相互耦接的存储器611和处理器612,处理器612用于执行存储器611中存储的程序指令,以实现上述任一对象的处理方法实施例的步骤。
在一个具体的实施场景中,智能终端61可以包括但不限于:计算机、平板电脑、智能手机以及智能手表等任一合理的智能终端中的一种,本申请对此不做限定。
具体而言,处理器612用于控制其自身以及存储器611以实现上述任一视频显示方法实施例的步骤。处理器612还可以称为CPU(Central Processing Unit,中央处理单元)。处理器612可能是一种集成电路芯片,具有信号的处理能力。处理器612还可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器612可以由集成电路芯片共同实现。
请参阅图8,图8是本申请计算机可读存储介质一实施例的框架示意图。计算机可读存储介质71存储有能够被处理器运行的程序指令711,程序指令711用于实现上述任一对象的处理方法实施例的步骤。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法、装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (13)

1.一种对象的处理方法,其特征在于,所述对象的处理方法包括:
响应于虚拟机当前的内存占用量超过第一设定阈值,将所述虚拟机的至少一个对象确定为目标对象,并对所述目标对象进行序列化处理;
将序列化的所述目标对象通过内存管道存储至Native内存中,并删除所述虚拟机中的所述目标对象。
2.根据权利要求1所述的对象的处理方法,其特征在于,所述响应于虚拟机当前的内存占用量超过第一设定阈值,将所述虚拟机的至少一个对象确定为目标对象,并对所述目标对象进行序列化处理的步骤,包括:
获取到所述虚拟机中使用频率小于设定频率且占用内存大于设定内存的至少一个对象确定为所述目标对象。
3.根据权利要求1所述的对象的处理方法,其特征在于,所述响应于虚拟机当前的内存占用量超过第一设定阈值,将所述虚拟机的至少一个对象确定为目标对象,并对所述目标对象进行序列化处理的步骤,包括:
响应于虚拟机当前的内存占用量超过第一设定阈值,随机将所述虚拟机中的至少一个对象确定为所述目标对象。
4.根据权利要求1所述的对象的处理方法,其特征在于,所述响应于虚拟机当前的内存占用量超过第一设定阈值,将所述虚拟机的至少一个对象确定为目标对象,并对所述目标对象进行序列化处理的步骤,包括:
响应于至少一个对象等待再次运行,将等待再次运行的对象确定为所述目标对象。
5.根据权利要求1-4中任一项所述的对象的处理方法,其特征在于,所述对象的处理方法包括:
响应于将至少一个对象上传服务器,删除所述虚拟机内存中已上传的对象。
6.根据权利要求1-4中任一项所述的对象的处理方法,其特征在于,所述将序列化的所述目标对象通过内存管道存储至Native内存中,并删除所述虚拟机中的所述目标对象的步骤之后,还包括:
响应于所述虚拟机内存中存在Native指针,基于所述Native指针从所述Native内存中获取序列化的所述目标对象;
将序列化的所述目标对象反序列化,以得到并运行所述目标对象。
7.根据权利要求6所述的对象的处理方法,其特征在于,所述响应于所述虚拟机内存中存在Native指针,基于所述Native指针从所述Native内存中获取序列化的所述目标对象的步骤,包括:
响应于存在有多个线程同时读取所述Native内存中的序列化的所述目标对象,将序列化的所述目标对象加载至其中一个所述线程。
8.根据权利要求1-4中任一项所述的对象的处理方法,其特征在于,所述将序列化的所述目标对象通过内存管道存储至Native内存中,并删除所述虚拟机中的所述目标对象的步骤之后,还包括:
响应于所述Native内存当前的占用量超过第二设定阈值,删除所述Native内存中的部分序列化的所述目标对象。
9.根据权利要求8所述的对象的处理方法,其特征在于,所述响应于所述Native内存当前的占用量超过第二设定阈值,删除所述Native内存中的部分序列化的所述目标对象的步骤,包括:
响应于所述Native内存当前的占用量超过所述第二设定阈值,按照存储时序或数据大小依次删除所述Native内存中的部分序列化的所述目标对象。
10.根据权利要求1-4中任一项所述的对象的处理方法,其特征在于,所述将序列化的所述目标对象通过内存管道存储至Native内存中,并删除所述虚拟机中的所述目标对象的步骤之后,还包括:
响应于所述虚拟机当前的内存占用量小于第三设定阈值,且所述Native内存的占用量小于第四设定阈值,关闭所述虚拟机至所述Native内存的传输通道。
11.一种对象的处理装置,其特征在于,所述对象的处理装置包括:
检测模块,用于在虚拟机当前的内存占用量超过第一设定阈值,将所述虚拟机的至少一个对象确定为目标对象;
处理模块,用于对所述目标对象进行序列化处理,以将序列化的所述目标对象通过内存管道存储至Native内存中,并删除所述虚拟机中的所述目标对象。
12.一种智能终端,其特征在于,所述智能终端包括相互耦接的存储器和处理器,所述处理器用于执行所述存储器中存储的程序指令,以实现如权利要求1-10中任一项所述的对象的处理方法。
13.一种计算机可读存储介质,其上存储有程序指令,其特征在于,所述程序指令被处理器执行时,实现如权利要求1-10中任一项所述的对象的处理方法。
CN202110997855.6A 2021-08-27 2021-08-27 对象的处理方法和装置、智能终端及存储介质 Active CN113778624B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110997855.6A CN113778624B (zh) 2021-08-27 2021-08-27 对象的处理方法和装置、智能终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110997855.6A CN113778624B (zh) 2021-08-27 2021-08-27 对象的处理方法和装置、智能终端及存储介质

Publications (2)

Publication Number Publication Date
CN113778624A true CN113778624A (zh) 2021-12-10
CN113778624B CN113778624B (zh) 2024-06-21

Family

ID=78839659

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110997855.6A Active CN113778624B (zh) 2021-08-27 2021-08-27 对象的处理方法和装置、智能终端及存储介质

Country Status (1)

Country Link
CN (1) CN113778624B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7159223B1 (en) * 2000-05-12 2007-01-02 Zw Company, Llc Methods and systems for applications to interact with hardware
CN108196937A (zh) * 2017-12-26 2018-06-22 金蝶软件(中国)有限公司 字符串对象的处理方法、装置、计算机设备和存储介质
CN109669759A (zh) * 2018-09-25 2019-04-23 深圳壹账通智能科技有限公司 Java虚拟机的垃圾回收方法、装置、设备和存储介质
CN110908762A (zh) * 2019-11-22 2020-03-24 珠海豹趣科技有限公司 一种动态壁纸实现方法及设备
CN112306894A (zh) * 2019-07-29 2021-02-02 腾讯科技(深圳)有限公司 对象引用方法、装置、设备及存储介质
CN113204407A (zh) * 2021-04-22 2021-08-03 新华三大数据技术有限公司 一种内存超配管理方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7159223B1 (en) * 2000-05-12 2007-01-02 Zw Company, Llc Methods and systems for applications to interact with hardware
CN108196937A (zh) * 2017-12-26 2018-06-22 金蝶软件(中国)有限公司 字符串对象的处理方法、装置、计算机设备和存储介质
CN109669759A (zh) * 2018-09-25 2019-04-23 深圳壹账通智能科技有限公司 Java虚拟机的垃圾回收方法、装置、设备和存储介质
CN112306894A (zh) * 2019-07-29 2021-02-02 腾讯科技(深圳)有限公司 对象引用方法、装置、设备及存储介质
CN110908762A (zh) * 2019-11-22 2020-03-24 珠海豹趣科技有限公司 一种动态壁纸实现方法及设备
CN113204407A (zh) * 2021-04-22 2021-08-03 新华三大数据技术有限公司 一种内存超配管理方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JAY_HUAXIAO: "Java程序员必备:序列化全方位解析", pages 1 - 20, Retrieved from the Internet <URL:https://www.cnblogs.com/jay-huaxiao/p/12730437.html> *

Also Published As

Publication number Publication date
CN113778624B (zh) 2024-06-21

Similar Documents

Publication Publication Date Title
CN111163345B (zh) 一种图像渲染方法及装置
US20220221998A1 (en) Memory management method, electronic device and non-transitory computer-readable medium
CN113918101B (zh) 一种写数据高速缓存的方法、系统、设备和存储介质
US20220058772A1 (en) Image Processing Method and Device
WO2020063008A1 (zh) 资源配置方法、装置、终端及存储介质
WO2020220971A1 (zh) 一种文件加载方法、装置、电子设备及存储介质
WO2021057665A1 (zh) 数据存储方法、装置、移动终端及存储介质
CN107122176B (zh) 一种图形绘制方法及装置
CN110532205A (zh) 数据传输方法、装置、计算机设备和计算机可读存储介质
CN111723115B (zh) 基于多级缓存的数据统计方法、装置、终端及存储介质
CN111400052A (zh) 解压缩方法、装置、电子设备及存储介质
CN115827506A (zh) 数据写入方法、数据读取方法、装置、处理核和处理器
US10198784B2 (en) Capturing commands in a multi-engine graphics processing unit
CN113467964A (zh) 接入用户态协议栈的实现方法、系统、装置及存储介质
CN115794446B (zh) 一种消息处理方法、装置、电子设备和存储介质
CN113778624B (zh) 对象的处理方法和装置、智能终端及存储介质
CN111767154B (zh) 用于无阻塞通讯的无锁环形队列实现方法
CN113849195A (zh) 应用程序加载方法、装置、存储介质以及终端
CN112817769B (zh) 游戏资源动态缓存方法、装置、存储介质与电子设备
CN113434149B (zh) 应用程序生成和加载方法、装置和介质
CN111625500A (zh) 文件快照方法及装置、电子设备和存储介质
CN116991600B (zh) 图形调用指令的处理方法、装置、设备及存储介质
CN111858399B (zh) 一种数据传输方法、装置、计算机可读存储介质和计算机设备
CN115982060B (zh) 一种内存回收方法及相关装置
CN116934570A (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