CN107544846A - 一种内存管理方法、装置及电子设备 - Google Patents

一种内存管理方法、装置及电子设备 Download PDF

Info

Publication number
CN107544846A
CN107544846A CN201710670731.0A CN201710670731A CN107544846A CN 107544846 A CN107544846 A CN 107544846A CN 201710670731 A CN201710670731 A CN 201710670731A CN 107544846 A CN107544846 A CN 107544846A
Authority
CN
China
Prior art keywords
reception
reception object
message
receives
weak reference
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
CN201710670731.0A
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.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network 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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201710670731.0A priority Critical patent/CN107544846A/zh
Publication of CN107544846A publication Critical patent/CN107544846A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明实施例公开了一种内存管理方法、装置及电子设备。本发明实施例方法包括:获取为强引用对象的第一接收对象的注册请求;将第一接收对象转换为弱引用对象的第二接收对象,第二接收对象为所述第一接收对象被弱引用壳子包裹后的接收对象;若在预置的接收对象集合中不存在第二接收对象,则将第二接收对象添加到所述接收对象集合中;在内存资源紧张时,回收接收对象集合中被弱引用壳子包裹的第一接收对象。本发明实施例中通过将作为消息接收对象的监听者转换为弱引用对象,在内存资源紧张时,可以进行回收,能够保证即使没有经过反注册的消息接收对象依旧能够确保系统在某一时刻能够对其进行内存回收,从而达到了解决内存泄漏的目的。

Description

一种内存管理方法、装置及电子设备
技术领域
本发明涉及视频播放技术领域,特别涉及一种内存管理方法、装置及电子设备。
背景技术
在一些视频或直播类应用(Application,APP)的开发过程中我们通常会对某一些事件进行监听,并需要将点击发送按钮的相关信息传递到其他业务逻辑中,在这些应用的一些显示面板中将信息对外暴露的方案通常是使用监听器的方式来进行暴露,也就是说被监听者有相关信号触发的时候会将触发信号发送给监听者,通过这种方式来完成信号的转发。
常规方案中监听的实现方式通常都是直接引用关系,也就是说被监听着持有监听者的引用,当信号触发的时候被监听着通过监听者的引用关系将信号转发到监听者中去。后续如果监听者不再关注监听信号的时候需要及时的将引用关系从被监听着中进行移除,这样监听者就能够有效的释放内存资源。如果监听者没有及时的将资源信息进行移除,由于被监听着可能常驻内存高,同时被监听着有长期持有监听者的引用关系,这样就会导致系统认为监听者一直需要被使用,所以永远不会进行释放,这样就会造成内存泄漏的问题产生。
发明内容
本发明实施例提供了一种内存管理方法、装置及电子设备,避免了消息监听时,被监听者有长期持有监听者的引用关系,导致监听者一直需要被使用,从而导致内存泄漏的问题。
第一方面,本申请提供了一种内存管理方法,该方法包括:
获取为强引用对象的第一接收对象的注册请求;
将所述第一接收对象转换为弱引用对象的第二接收对象,所述第二接收对象为所述第一接收对象被弱引用壳子包裹后的接收对象;
若在预置的接收对象集合中不存在所述第二接收对象,则将所述第二接收对象添加到所述接收对象集合中;
在内存资源紧张时,回收所述接收对象集合中被弱引用壳子包裹的所述第一接收对象。
进一步的,所述方法还包括:
定义消息通信接口协议,所述消息通信接口协议中包括消息发送函数。
进一步的,所述方法还包括:
遍历所述接收对象集合中每一接收对象;
依次以所述接收对象集合中每一接收对象为目标接收对象,判断所述目标接收对象对应的弱引用壳子中包裹的元素是否为空;
若是,则遍历接收对象集合中下一个接收对象;
若否,则调用消息通信接口协议中的消息发送函数发送消息到所述目标接收对象。
进一步的,在所述若在预置的接收对象集合中不存在所述第二接收对象,则将所述第二接收对象添加到所述接收对象集合中步骤之前,所述方法还包括:
利用contains方法检测所述接收对象集合中是否存在所述第二接收对象。
进一步的,所述方法还包括:
获取删除第三接收对象的指令,所述第三接收对象被弱引用壳子包裹后形成第四接收对象;
将所述第三接收对象从所述接收对象集合中的第四接收对象中删除。
第二方面,本申请提供一种内存管理装置,该装置包括:
获取模块,用于获取为强引用对象的第一接收对象的注册请求;
转换模块,用于将所述第一接收对象转换为弱引用对象的第二接收对象,所述第二接收对象为所述第一接收对象被弱引用壳子包裹后的接收对象;
添加模块,用于若在预置的接收对象集合中不存在所述第二接收对象,则将所述第二接收对象添加到所述接收对象集合中;
资源回收模块,用于在内存资源紧张时,回收所述接收对象集合中被弱引用壳子包裹的所述第一接收对象。
进一步的,所述装置还包括:
定义模块,用于定义消息通信接口协议,所述消息通信接口协议中包括消息发送函数。
进一步的,所述装置还包括:
消息发送模块,用于遍历所述接收对象集合中每一接收对象;依次以所述接收对象集合中每一接收对象为目标接收对象,判断所述目标接收对象对应的弱引用壳子中包裹的元素是否为空;若是,则遍历接收对象集合中下一个接收对象;若否,则调用消息通信接口协议中的消息发送函数发送消息到所述目标接收对象。
进一步的,所述装置还包括:
删除模块,用于获取删除第三接收对象的指令,所述第三接收对象被弱引用壳子包裹后形成第四接收对象;将所述第三接收对象从所述接收对象集合中的第四接收对象中删除。
进一步的,所述装置还包括:
检测模块,用于在所述若在预置的接收对象集合中不存在所述第二接收对象,则将所述第二接收对象添加到所述接收对象集合中步骤之前,利用contains方法检测所述接收对象集合中是否存在所述第二接收对象。
第三方面,本发明还提供一种电子设备,包括:存储器,处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时可以实现第一方面中任一所述的方法。
第四方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中任一所述的方法。
本发明实施例通过获取为强引用对象的第一接收对象的注册请求;将第一接收对象转换为弱引用对象的第二接收对象,第二接收对象为所述第一接收对象被弱引用壳子包裹后的接收对象;若在预置的接收对象集合中不存在第二接收对象,则将第二接收对象添加到所述接收对象集合中;在内存资源紧张时,回收接收对象集合中被弱引用壳子包裹的第一接收对象。本发明实施例中通过将作为消息接收对象的监听者转换为弱引用对象,在内存资源紧张时,可以进行回收,能够保证即使没有经过反注册的消息接收对象依旧能够确保系统在某一时刻能够对其进行内存回收,从而达到了解决内存泄漏的目的。
附图说明
图1是本发明实施例中内存管理方法的一个实施例示意图;
图2是本发明实施例内存管理方法在图1所示实施例基础上新增步骤的一个实施例示意图;
图3是本发明实施例内存管理方法在图1所示实施例基础上新增步骤的另一个实施例示意图;
图4是本发明实施例中内存管理装置的一个实施例示意图;
图5是本发明实施例中内存管理装置的另一个实施例示意图;
图6是本发明实施例中内存管理装置的另一个实施例示意图;
图7是本发明实施例中内存管理装置的另一个实施例示意图
图8是本发明实施例中内存管理装置的另一个实施例示意图;
图9是本发明实施例中电子设备的一个实施例示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例中内存管理方法应用于内存管理装置,该装置位于电子设备中,该内存管理管理装置可以是电子设备中的应用(APP)或者电子设备中应用的一个软件模块。该电子设备可以是手机、平板电脑或者个人电脑等电子设备,也可以是未来出现有显示屏的电子设备等。
请参阅图1,本发明实施例中内存管理方法一个实施例包括:
S101、获取为强引用对象的第一接收对象的注册请求;
由于消息接收者和消息发送者之间一定会有一个纽带建立起消息发送者和消息接收者之间的关联性,为了解耦消息发送者和消息接收者之间的耦合关系,本发明实施例中选择使用接口的方式来解耦其之间的关系。接口我们可以简单的理解为通信协议,如果双方是通过协议的方式来进行沟通那么自然之间的耦合关系就会比较弱,就不是强耦合关系了。即本发明实施例中,该方法还包括:定义消息通信接口协议,该消息通信接口协议中包括消息发送函数。具体的,本实施例中设计了一个消息通讯接口协议IMsg,该消息通讯接口协议中包含一个函数sendMessage方法,也就是说后续通信主要是通过sendMessage方法来进行交互的。本步骤所述的注册其本质就是将外部的一个Imsg对象注册到内存管理管理装置对应的应用的消息总线中来。
本实施例中,第一接收对象为消息接收对象,即消息接收者对应的接收对象,与内存管理管理装置中的消息发送者对应,第一接收对象在初始状态时为IMsg对象,为强引用对象。
S102、将第一接收对象转换为弱引用对象的第二接收对象,所述第二接收对象为所述第一接收对象被弱引用壳子包裹后的接收对象;
上述描述中虽然消息发送方和消息接收方是通过接口的形式来进行耦合的,其之间也是具有耦合关系的,这种耦合关系如果没有及时的释放依旧会引起内存泄露的风险,为了避免该问题的发生,在注册前需要对接收对象IMsg对象做一加工处理。本实施例中,会在IMsg对象的外层套一层弱引用WeakFeference的壳子,这样就可以将IMsg转变成一个弱引用对象。具体的,第二接收对象即为第一接收对象被弱引用WeakFeference的壳子包裹后的接收对象。这样,第一接收对象就由IMsg对象转变成一个WeakReference<IMsg>对象(第二接收对象)。
S103、若在预置的接收对象集合中不存在所述第二接收对象,则将第二接收对象添加到接收对象集合中;
本实施例中,在内存管理管理装置对应的应用的消息总线中设计了接收对象集合,该接收对象集合用于保存各个消息接收者对应的接收对象。具体的,在内存管理管理装置对应的应用的消息总线中设计了listImsg对象集合,保存各个消息接收者对应的IMsg对象。
本实施例中,当第一接收对象调用预先自定义的register(注册)函数的时候,在该register函数内部会首先判断listImsg集合中是否已经包含了转换为弱引用对象的该第二接收对象,具体是通过调用listImsg对象中的contains方法来进行判定的,具体的,在所述若在预置的接收对象集合中不存在所述第二接收对象,则将所述第二接收对象添加到所述接收对象集合中步骤之前,利用contains方法检测所述接收对象集合中是否存在所述第二接收对象。如果已经包含了该第二接收对象就可以不用再次注册了,如果没有包含该第二接收对象就继续执行注册流程。通过这种方式可以将所有的接收对象全部缓存到对象集合listImsg中。
S104、在内存资源紧张时,回收接收对象集合中被弱引用壳子包裹的所述第一接收对象。
在Android系统中有一个垃圾回收机制,垃圾回收器会定期触发资源回收工作,垃圾回收器一旦触发回收信号后,他会首先将系统中的所有已经没有应用关系的垃圾对象全部回收掉,对于有应用关系的对象垃圾回收器不会进行回收。对于那些被WeakReference包裹的对象,例如上述描述的被WeakReference包裹的IMsg对象,当系统资源紧张的时候,垃圾回收器会主动触发资源回收,此时就能够有效的回收掉weakreference包过的对象资源,即第一接收对象。
通过上面的分析可以知道,由于对IMsg的外层包裹入口一层WeakFeference的弱引用。所以系统能够在资源紧张的时候自动释放IMsg对象。
本实施例中,当系统(可以是电子设备所搭载的操作系统)当前可以使用的内存资源低于预设阈值(例如1G)时,表示内存资源不足。
本发明实施例通过获取为强引用对象的第一接收对象的注册请求;将第一接收对象转换为弱引用对象的第二接收对象,第二接收对象为所述第一接收对象被弱引用壳子包裹后的接收对象;若在预置的接收对象集合中不存在第二接收对象,则将第二接收对象添加到所述接收对象集合中;在内存资源紧张时,回收接收对象集合中被弱引用壳子包裹的第一接收对象。本发明实施例中通过将作为消息接收对象的监听者转换为弱引用对象,在内存资源紧张时,可以进行回收,能够保证即使没有经过反注册的消息接收对象依旧能够确保系统在某一时刻能够对其进行内存回收,从而达到了解决内存泄漏的目的。
如图2所示,在本发明一些实施例中,本发明实施例中方法还可以进一步包括:
S201、遍历接收对象集合中每一接收对象;
S202、依次以接收对象集合中每一接收对象为目标接收对象,判断目标接收对象对应的弱引用壳子中包裹的元素是否为空;若是,则执行步骤S203,若否,则执行步骤S204。
S203、遍历接收对象集合中下一个接收对象;
S204、调用消息通信接口协议中的消息发送函数发送消息到所述目标接收对象。
当消息发送者需要分发消息的时候,需要将消息分发到所有的接收对象中,由于在上述方案中已经将所有的接收对象全部缓存到对象集合listImsg中来了。此时对消息的分发其实就是将消息分发到集合listImsg中的每一个元素(每一个接收对象)。
因此具体的,本实施例中,步骤S201可以通过for循环的方式来遍历接收对象集合listImsg中的每一个元素,这个地方的遍历有一个需要注意的地方,由于在图1所示实施例中已经将消息接收对象全部包裹了一层弱引用关系,所以有可能从接收对象集合listImsg中取出该接收对象的时候该对象已经被垃圾回收器给回收了,为了避免由此而产生的空指针异常,在遍历出来的每一对象都需要对其做空判断,即上述步骤S202中描述的内容,也就是说通过for循环取出接收对象集合listImsg中的每一个元素时,每次取出一个元素的时候对该元素做空判断,如果该元素不为空就调用该元素中的sendMessage方法来将消息发送出去,如果该元素为空我们就继续遍历该接收对象集合listImsg中下一个元素对象。
本实施例中描述了消息的分发业务逻辑处理,在消息分发业务逻辑中由于上述实施例中已经将消息包裹了一层弱引用关系,所以在取出接收对象的时候很可能该接收对象已经被回收了,所以此处对每一接收对象都需要做空判断,以免发生空指针异常。
在本发明另一些实施例中,还设计了消息的反注册机制,所谓消息的反注册机制主要就是将接收对象集合listImsg中的元素进行删除的过程。删除接收对象集合listImsg中的元素的主要目的是为了方便系统能够及时回收IMsg对象从而避免内存泄漏的问题。
由于在上述描述的方案中注册阶段已经给IMsg对象套了一层弱引用关系,即使不对其进行反注册,垃圾回收器也会在必要的收对其进行回收,从而避免了内存泄漏问题的发生。本实施例中之所以依旧给出了消息反注册机制是为了能够尽快的释放内存而设计的,因为如果不从接收对象集合listImsg中删除IMsg对象的引用,那么当不想监听消息的时候,系统并不会立即释放内存,而是到一定的条件后垃圾回收机制才会触发释放,从而解决内存泄漏的问题。但是如果主动的通过消息反注册机制后,垃圾回收器的任何一次触发回收就会立即将该内存进行回收,这样就能够提高内存回收的速度。
具体的,如图3所示,本实施例中中方法还可以包括:
S301、获取删除第三接收对象的指令,所述第三接收对象被弱引用壳子包裹后形成第四接收对象;
S302、将第三接收对象从所述接收对象集合中的第四接收对象中删除。
本实施例中,可以通过调用接收对象集合listImsg中的remove方法来移除接收对象集合listImsg中的元素的。
本实施例中可以立即将该内存进行回收,不需要等到垃圾回收器自动进行回收,能够提高内存回收的速度。
下面介绍本发明实施例中内存管理装置的实施例。
请参阅图4,为本发明实施例中内存管理装置的一个实施例示意图,该装置包括:
获取模块401,用于获取为强引用对象的第一接收对象的注册请求;
转换模块402,用于将所述第一接收对象转换为弱引用对象的第二接收对象,所述第二接收对象为所述第一接收对象被弱引用壳子包裹后的接收对象;
添加模块403,用于若在预置的接收对象集合中不存在所述第二接收对象,则将所述第二接收对象添加到所述接收对象集合中;
资源回收模块404,用于在内存资源紧张时,回收所述接收对象集合中被弱引用壳子包裹的所述第一接收对象。
进一步的,如图5所示,所述装置还包括:
消息发送模块405,用于遍历所述接收对象集合中每一接收对象;依次以所述接收对象集合中每一接收对象为目标接收对象,判断所述目标接收对象对应的弱引用壳子中包裹的元素是否为空;若是,则遍历接收对象集合中下一个接收对象;若否,则调用预置的消息通信接口协议中的消息发送函数发送消息到所述目标接收对象。
进一步的,如图6所示,所述装置还包括:
定义模块406,用于在遍历所述接收对象集合中每一接收对象的步骤之前,定义所述消息通信接口协议,所述消息通信接口协议中包括消息发送函数。
进一步的,如图7所示,所述装置还包括:
删除模块407,用于获取删除第三接收对象的指令,所述第三接收对象被弱引用壳子包裹后形成第四接收对象;将所述第三接收对象从所述接收对象集合中的第四接收对象中删除。
进一步的,如图8所示,所述装置还包括:
检测模块408,用于在所述若在预置的接收对象集合中不存在所述第二接收对象,则将所述第二接收对象添加到所述接收对象集合中步骤之前,利用contains方法检测所述接收对象集合中是否存在所述第二接收对象。
本发明实施例中还提供一种电子设备,请参见图9,所述电子设备包括:
存储器901,处理器902及存储在所述存储器上并可在所述处理器上运行的计算机程序903,其中,所述处理器902执行所述计算机程序903时可以实现上述内存管理方法。
需要说明的是,本申请涉及的电子设备包括但不限于是:移动终端(手机、智能手机、PAD、笔记本电脑等等)、固定终端(计算机)。
为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。存储器901可用于存储计算机程序903,上述计算机程序包括软件程序、模块和数据,处理器902通过运行执行存储在存储器901的计算机程序903,从而执行电子设备的各种功能应用以及数据处理。
在具体的实施过程中,存储器901可用于存储软件程序以及模块,处理器902通过运行存储在存储器901的软件程序以及模块,从而执行电子设备的各种功能应用以及数据处理。存储器901可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(例如游戏类应用程序、聊天类应用程序)等;存储数据区可存储根据电子设备的使用所创建的数据(游戏配置数据、音频数据)等。此外,存储器901可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。处理器902是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器901内的软件程序和/或模块,以及调用存储在存储器901内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器902可包括一个或多个处理单元;优选的,处理器902可集成应用处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等。
本发明实施例还提供一种计算机可读存储介质,其中,该计算机可读存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的内存管理方法的部分或全部步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种内存管理方法,其特征在于,所述方法包括:
获取为强引用对象的第一接收对象的注册请求;
将所述第一接收对象转换为弱引用对象的第二接收对象,所述第二接收对象为所述第一接收对象被弱引用壳子包裹后的接收对象;
若在预置的接收对象集合中不存在所述第二接收对象,则将所述第二接收对象添加到所述接收对象集合中;
在内存资源紧张时,回收所述接收对象集合中被弱引用壳子包裹的所述第一接收对象。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
定义所述消息通信接口协议,所述消息通信接口协议中包括消息发送函数。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
遍历所述接收对象集合中每一接收对象;
依次以所述接收对象集合中每一接收对象为目标接收对象,判断所述目标接收对象对应的弱引用壳子中包裹的元素是否为空;
若是,则遍历接收对象集合中下一个接收对象;
若否,则调用所述消息通信接口协议中的消息发送函数发送消息到所述目标接收对象。
4.根据权利要求1所述的方法,其特征在于,在所述若在预置的接收对象集合中不存在所述第二接收对象,则将所述第二接收对象添加到所述接收对象集合中步骤之前,所述方法还包括:
利用contains方法检测所述接收对象集合中是否存在所述第二接收对象。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取删除第三接收对象的指令,所述第三接收对象被弱引用壳子包裹后形成第四接收对象;
将所述第三接收对象从所述接收对象集合中的第四接收对象中删除。
6.一种内存管理装置,其特征在于,所述装置包括:
获取模块,用于获取为强引用对象的第一接收对象的注册请求;
转换模块,用于将所述第一接收对象转换为弱引用对象的第二接收对象,所述第二接收对象为所述第一接收对象被弱引用壳子包裹后的接收对象;
添加模块,用于若在预置的接收对象集合中不存在所述第二接收对象,则将所述第二接收对象添加到所述接收对象集合中;
资源回收模块,用于在内存资源紧张时,回收所述接收对象集合中被弱引用壳子包裹的所述第一接收对象。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
定义模块,用于定义消息通信接口协议,所述消息通信接口协议中包括消息发送函数。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
消息发送模块,用于遍历所述接收对象集合中每一接收对象;依次以所述接收对象集合中每一接收对象为目标接收对象,判断所述目标接收对象对应的弱引用壳子中包裹的元素是否为空;若是,则遍历接收对象集合中下一个接收对象;若否,则调用所述消息通信接口协议中的消息发送函数发送消息到所述目标接收对象。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
删除模块,用于获取删除第三接收对象的指令,所述第三接收对象被弱引用壳子包裹后形成第四接收对象;将所述第三接收对象从所述接收对象集合中的第四接收对象中删除。
10.一种电子设备,其特征在于,包括:存储器,处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时可以实现权利要求1至5任一所述的方法。
CN201710670731.0A 2017-08-08 2017-08-08 一种内存管理方法、装置及电子设备 Pending CN107544846A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710670731.0A CN107544846A (zh) 2017-08-08 2017-08-08 一种内存管理方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710670731.0A CN107544846A (zh) 2017-08-08 2017-08-08 一种内存管理方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN107544846A true CN107544846A (zh) 2018-01-05

Family

ID=60971272

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710670731.0A Pending CN107544846A (zh) 2017-08-08 2017-08-08 一种内存管理方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN107544846A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109005448A (zh) * 2018-06-28 2018-12-14 武汉斗鱼网络科技有限公司 弹幕消息分发方法、装置、设备及存储介质
CN109302639A (zh) * 2018-09-30 2019-02-01 武汉斗鱼网络科技有限公司 一种弹幕消息的分发方法、装置、终端和存储介质
CN109697036A (zh) * 2018-12-29 2019-04-30 北京金山安全软件有限公司 一种信息处理方法及装置
CN109739853A (zh) * 2018-12-21 2019-05-10 北京金山安全软件有限公司 数组处理方法、装置、电子设备及存储介质
CN115982060A (zh) * 2021-10-14 2023-04-18 华为技术有限公司 一种内存回收方法及相关装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040268367A1 (en) * 2003-06-30 2004-12-30 Roe Bryan Y. Method for managing a callback object in an event-based environment using weak references
US8838656B1 (en) * 2009-07-31 2014-09-16 Hiscamp Systems, Inc. Hardware-protected reference count-based memory management using weak references
CN106227650A (zh) * 2016-07-08 2016-12-14 北京奇虎科技有限公司 一种检测应用的内存泄漏的方法和装置
CN106649130A (zh) * 2016-12-28 2017-05-10 乐蜜科技有限公司 内存空间回收方法、装置和电子设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040268367A1 (en) * 2003-06-30 2004-12-30 Roe Bryan Y. Method for managing a callback object in an event-based environment using weak references
US8838656B1 (en) * 2009-07-31 2014-09-16 Hiscamp Systems, Inc. Hardware-protected reference count-based memory management using weak references
CN106227650A (zh) * 2016-07-08 2016-12-14 北京奇虎科技有限公司 一种检测应用的内存泄漏的方法和装置
CN106649130A (zh) * 2016-12-28 2017-05-10 乐蜜科技有限公司 内存空间回收方法、装置和电子设备

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109005448A (zh) * 2018-06-28 2018-12-14 武汉斗鱼网络科技有限公司 弹幕消息分发方法、装置、设备及存储介质
CN109005448B (zh) * 2018-06-28 2021-06-15 武汉斗鱼网络科技有限公司 弹幕消息分发方法、装置、设备及存储介质
CN109302639A (zh) * 2018-09-30 2019-02-01 武汉斗鱼网络科技有限公司 一种弹幕消息的分发方法、装置、终端和存储介质
CN109739853A (zh) * 2018-12-21 2019-05-10 北京金山安全软件有限公司 数组处理方法、装置、电子设备及存储介质
CN109697036A (zh) * 2018-12-29 2019-04-30 北京金山安全软件有限公司 一种信息处理方法及装置
CN115982060A (zh) * 2021-10-14 2023-04-18 华为技术有限公司 一种内存回收方法及相关装置

Similar Documents

Publication Publication Date Title
CN107544846A (zh) 一种内存管理方法、装置及电子设备
CN104866366B (zh) 应用程序清理方法及装置
CN101984692B (zh) 一种防止恶意软件发送数据的方法及装置
CN106648861A (zh) 后台服务进程的保活方法及装置
CN111258921B (zh) 垃圾内存回收方法及装置、电子设备、存储介质
CN106445609A (zh) 应用程序的自动更新方法及移动终端
CN106961339B (zh) 实现定向流量的方法及系统
CN109348434B (zh) 一种场景信息的发送方法、发送装置及终端设备
CN104519262A (zh) 获取视频数据的方法、装置及终端
CN106528386A (zh) 一种应用广播的控制方法及终端
CN106445743A (zh) 数据备份传输方法及移动终端
CN106844026A (zh) 一种清理终端设备进程的方法及系统
CN108540509A (zh) 一种终端浏览器的处理方法、装置及服务器、智能终端
CN106569913A (zh) 终端备份数据的方法及装置
CN107395490A (zh) 多媒体消息的发送方法、装置、存储介质及电子设备
CN107066324A (zh) 一种指纹处理资源的控制方法及设备
CN111338710A (zh) 应用程序控制方法、装置、电子设备及存储介质
CN106331076A (zh) 广告推送方法及装置
CN107025574A (zh) 推广信息的展示方法及装置
CN102131002B (zh) 一种手机数据处理方法和装置
CN110032430A (zh) 应用程序处理方法和装置、电子设备、计算机可读存储介质
CN107770767A (zh) 信息处理方法、装置、移动终端和计算机可读存储介质
CN107743303A (zh) 信息处理方法、装置、移动终端和计算机可读存储介质
CN107682552A (zh) 信息处理方法、装置、移动终端和计算机可读存储介质
CN106454911A (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20180105