CN106250242A - 基于操作系统的内存复用方法及装置 - Google Patents
基于操作系统的内存复用方法及装置 Download PDFInfo
- Publication number
- CN106250242A CN106250242A CN201610652332.7A CN201610652332A CN106250242A CN 106250242 A CN106250242 A CN 106250242A CN 201610652332 A CN201610652332 A CN 201610652332A CN 106250242 A CN106250242 A CN 106250242A
- Authority
- CN
- China
- Prior art keywords
- memory pool
- internal memory
- operating system
- idle condition
- memory
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出基于操作系统的内存复用方法及相对应的内存复用装置。具体为引入内存池机制来维护交互频繁的某些对象而不去实时动态使用new关键字来创建,例如对对象内存池进行对象添加、标记、查询以及空闲对象计时及监控等操作,甚至是对对象内存池的删除操作。因此能够增强运行在操作系统例如Android或其他操作系统中的软件稳定性,软件长期运行而不会变慢甚至死掉,大大减少了软件运行变慢、挂掉的可能。
Description
技术领域
本发明涉及内存管理技术领域,尤其涉及基于操作系统的内存复用方法以及内存复用装置。
背景技术
在软件开发领域,通常会使用高级语言如java或者C#,而这种语言本身具有内存管理机制,完全是面向对象的,用户只需要使用new关键字来为对象分配内存,并执行对象的方法来调用一些模块功能。而使用new关键字来分配的内存是由操作系统来管理的。内存在不需要的时候,回收也是由操作系统自动完成的。
而这种在运行过程中使用new关键字分配内存,具有一定的不确定性,在某个时刻,可能分配不到内存或者分配速度变慢。因为长期动态分配内存可能会导致内存碎片,在分配不到内存时会引发碎片整理,从而使系统变慢。另外,对于某些应用,运行所需的内存是固定的,并且需要长达几个月甚至几年而不断电。
发明内容
因此,针对现有技术中内存长期动态分配会导致内存碎片且内存碎片整理会引发系统变慢的问题以及操作系统释放内存不及时导致申请不到内存而造成软件挂掉的问题,本发明提出一种基于操作系统的内存复用方法和一种基于操作系统的内存复用装置。
具体地,本发明实施例提出的一种基于操作系统的内存复用方法,包括步骤:(i)创建目标类型的对象内存池;(ii)使用new关键字创建所述目标类型的第一对象,将所述第一对象添加到所述对象内存池并标记所述第一对象的状态为已经使用状态;(iii)当所述第一对象使用完后,将所述第一对象的状态标记为空闲状态;(iv)当有新对象需要使用且所述新对象的类型为所述目标类型时,查找所述对象内存池中是否有处于空闲状态的对象,如果有则直接返回查找到的处于空闲状态的对象,如果没有则使用new关键字创建一个对象作为所述新对象并添加至所述对象内存池。
在本发明的一个实施例中,所述基于操作系统的内存复用方法在步骤(iii)之后还包括步骤:对所述第一对象进行计时以得到所述第一对象处于空闲状态的时间长度;查询计时得到的所述第一对象处于空闲状态的所述时间长度;以及当所述时间长度大于所述对象内存池设置的处于空闲状态的对象的最大存放时间时,将所述第一对象从所述对象内存池删除。
在本发明的一个实施例中,所述基于操作系统的内存复用方法还包括步骤:当所述对象内存池使用完后,删除所述对象内存池。
在本发明的一个实施例中,所述内存复用方法应用于媒体播放,相应地所述第一对象和所述新对象均为媒体播放对象。
在本发明的一个实施例中,所述目标类型选自文字、视频、图片和GIF动画之一。
在本发明的一个实施例中,所述内存复用方法由LED显示屏异步控制卡的ARM处理器执行。
此外,本发明实施例提出的一种基于操作系统的内存复用装置,包括:对象添加模块,用于将使用new关键字创建的对象添加至对应类型的对象内存池;对象标记模块,用于标记所述对象内存池中的对象的状态为已经使用状态或空闲状态,其中在所述对象被添加至所述对象内存池时由所述对象标记模块标记为已经使用状态、且在所述对象被使用完后由所述对象标记模块标记为空闲状态;以及对象内存池查找模块,用于当有新的对应类型对象需要使用时在所述对象内存池中查找是否有处于空闲状态的对象,如果有处于空闲状态的对象则返回查找到的对象。
在本发明的一个实施例中,所述基于操作系统的内存复用装置还包括:空闲对象计时模块,用于对标记为空闲状态的对象进行计时以得到空闲时间长度;以及空闲对象监控模块,用于获取所述对象内存池中标记为空闲状态的对象的所述空闲时间长度并当所述空闲时间长度超过所述对象内存池存放标记为空闲状态的对象的最长存放时间时删除所述标记为空闲状态的对象。
在本发明的一个实施例中,所述基于操作系统的内存复用装置还包括:对象内存池删除模块,用于删除已经使用完的对象内存池。
在本发明的一个实施例中,所述内存复用装置应用于LED显示屏异步控制卡。
由上可知,本发明实施例引入内存池机制来维护交互频繁的某些对象而不去实时动态使用new关键字来创建,因此能够增强运行在操作系统例如Android或其他操作系统中的软件稳定性,软件长期运行而不会变慢甚至死掉,大大减少了软件运行变慢、挂掉的可能。
通过以下参考附图的详细说明,本发明的其它方面和特征变得明显。但是应当知道,该附图仅仅为解释的目的设计,而不是作为本发明的范围的限定。还应当知道,除非另外指出,不必要依比例绘制附图,它们仅仅力图概念地说明此处描述的结构和流程。
附图说明
下面将结合附图,对本发明的具体实施方式进行详细的说明。
图1为相关于本发明实施例的内存管理模型图。
图2为相关于本发明实施例的基于操作系统的内存复用装置的模块示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。
本发明下述实施例是在带有垃圾收集器的面向对象程序设计语言的基础上对内存交互频繁的模块进行内存模块复用的一种方法。如图1所示:
(1)所有被对象池管理器管理的对象均需要继承IPoolable接口(或称之为内存池管理接口),而此IPoolable接口是通过setFree()、setUsed()、IsFree()和getFreeDuration()四个方法函数来实现;此四个方法函数分别是用于设置对象为空闲、设置对象为已经使用、判断对象是否空闲、以及获取对象的空闲时间,其被对象内存池所使用。
(2)对于每种类型的对象,为其准备一个装载对象的内存池例如对象内存池1、对象内存池2、对象内存池3。每种对象内存池只能装载一种类型的对象,这里可以使用LinkedList双向链表来保存对象。
(3)初始化一个对象内存池(也即创建指定对象类型的对象内存池),起初是没有对象的。当用户需要此种类型的对象时,可以使用new关键字来分配一个对象放入对象内存池,并标记为已经使用(used),例如对象内存池1中的对象2、对象内存池2中的对象2及对象3、对象内存池3中的对象1及对象2均被标记为已经使用。
(4)当对象被使用完成后,调用setFree()方法函数标记对象为空闲(free);例如对象内存池1中的对象1、对象3及对象4,对象内存池2中的对象1及对象4,对象内存池3中的对象3及对象4均被标记为空闲。
(5)当有模块需要获取相同类型的对象的实例时,先在对应类型的对象内存池中寻找是否有空闲的对象,如果有则直接返回,没有则使用new关键字分配一个对象并放入对象内存池管理起来。
(6)每个对象内存池均有一个设置空闲对象存放的最大存放时间。当某个对象的空闲时间大于此最大存放时间时,这个对象将被从此对象内存池中删除,并被释放掉。
基于以上描述,可以将本实施例由软件实现的内存复用装置20划分为如图2所示的包括对象添加模块21、对象标记模块23、对象内存池查找模块25、空闲对象计时模块27、空闲对象监控模块29甚至是对象内存池删除模块31。其中,对象添加模块21用于添加对象到对应类型的对象内存池,其具体可以是利用new关键字创建并添加对象到新创建的对象内存池中,也可以是利用new关键字创建并添加对象到已经包含相同类型对象但无空闲对象的对象内存池中。对象标记模块23用于标记对象内存池中的对象的状态为空闲或已经使用,例如当添加对象到对应类型的对象内存池时调用setUsed()方法函数标记添加的对象为已经使用,当对象被使用完成后调用setFree()标记被使用完成的对象为空闲。对象内存池查找模块25用于查找对应类型的对象内存池中寻找是否有空闲的对象,其例如调用IsFree()方法函数来判断对象内存池中的各个对象是否为空闲。空闲对象计时模块27用于对标记为空闲状态的对象进行计时以得到空闲对象的空闲时间长度。空闲对象监控模块29用于监控空闲对象的空闲时间长度且当其空闲时间长度超过其所在对象内存池设置的空闲对象的最大存放时间时删除此空闲对象,其具体可以是通过调用getFreeDuration()方法函数来获取空闲对象的空闲时间长度。对象内存池删除模块31用于删除已经使用完的对象内存池,例如某个对象内存池中已经没有已经使用和空闲的对象或者某个对象内存池不再需要,则将此对象内存池删除。
为便于进一步理解本发明实施例,下面列举一个LED显示屏异步控制卡(典型地例如ARM处理器和可编程逻辑器件等)进行媒体播放过程中的内存复用方法,其例如由LED显示屏异步控制卡的ARM处理器执行并包括如下步骤:
(a)根据对象类型创建对应类型的对象内存池,例如:文字、视频、图片、GIF(Graphics Interchange Format,图形交换格式)动画等类型;
(b)根据功能需求创建不同类型的媒体播放对象例如A,将媒体播放对象A添加至对应类型的对象内存池并标记为已经使用状态;此处媒体播放对象A例如是通过new关键字来创建;
(c)待外部模块调用上述媒体播放对象A播放完媒体后,将媒体播放对象A标记为空闲状态,并对处于空闲状态的媒体播放对象A开始计时;
(d)当有新的媒体播放对象需要使用时,根据对象类型在对应的内存池中寻找是否有空闲的媒体播放对象,如果有则直接返回,没有则使用new关键字分配一个媒体播放对象并放入对象内存池管理起来(例如标记为已经使用状态)。此处,空闲的媒体播放对象是指被标记为空闲状态但未达到最大存放时间的媒体播放对象。
综上所述,本发明实施例提出的内存复用方法及装置引入了内存池机制来维护交互频繁的某些对象,因此能够增强运行在操作系统例如Android或其他操作系统中的软件稳定性,软件长期运行而不会变慢甚至死掉,大大减少了软件运行变慢、挂掉的可能。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (10)
1.一种基于操作系统的内存复用方法,其特征在于,包括步骤:
(i)创建目标类型的对象内存池;
(ii)使用new关键字创建所述目标类型的第一对象,将所述第一对象添加到所述对象内存池并标记所述第一对象的状态为已经使用状态;
(iii)当所述第一对象使用完后,将所述第一对象的状态标记为空闲状态;
(iv)当有新对象需要使用且所述新对象的类型为所述目标类型时,查找所述对象内存池中是否有处于空闲状态的对象,如果有则直接返回查找到的处于空闲状态的对象,如果没有则使用new关键字创建一个对象作为所述新对象并添加至所述对象内存池。
2.如权利要求1所述的基于操作系统的内存复用方法,其特征在于,在步骤(iii)之后还包括步骤:
对所述第一对象进行计时以得到所述第一对象处于空闲状态的时间长度;
查询计时得到的所述第一对象处于空闲状态的所述时间长度;以及
当所述时间长度大于所述对象内存池设置的处于空闲状态的对象的最大存放时间时,将所述第一对象从所述对象内存池删除。
3.如权利要求1所述的基于操作系统的内存复用方法,其特征在于,还包括步骤:
当所述对象内存池使用完后,删除所述对象内存池。
4.如权利要求1所述的基于操作系统的内存复用方法,其特征在于,所述内存复用方法应用于媒体播放,相应地所述第一对象和所述新对象均为媒体播放对象。
5.如权利要求4所述的基于操作系统的内存复用方法,其特征在于,所述目标类型选自文字、视频、图片和GIF动画之一。
6.如权利要求4所述的基于操作系统的内存复用方法,其特征在于,所述内存复用方法由LED显示屏异步控制卡的ARM处理器执行。
7.一种基于操作系统的内存复用装置,其特征在于,包括:
对象添加模块,用于将使用new关键字创建的对象添加至对应类型的对象内存池;
对象标记模块,用于标记所述对象内存池中的对象的状态为已经使用状态或空闲状态,其中在所述对象被添加至所述对象内存池时由所述对象标记模块标记为已经使用状态、且在所述对象被使用完后由所述对象标记模块标记为空闲状态;以及
对象内存池查找模块,用于当有新的对应类型对象需要使用时在所述对象内存池中查找是否有处于空闲状态的对象,如果有处于空闲状态的对象则返回查找到的对象。
8.如权利要求7所述的基于操作系统的内存复用装置,其特征在于,还包括:
空闲对象计时模块,用于对标记为空闲状态的对象进行计时以得到空闲时间长度;
空闲对象监控模块,用于获取所述对象内存池中标记为空闲状态的对象的所述空闲时间长度并当所述空闲时间长度超过所述对象内存池存放标记为空闲状态的对象的最长存放时间时删除所述标记为空闲状态的对象。
9.如权利要求7所述的基于操作系统的内存复用装置,其特征在于,还包括:
对象内存池删除模块,用于删除已经使用完的对象内存池。
10.如权利要求7所述的基于操作系统的内存复用装置,其特征在于,所述内存复用装置应用于LED显示屏异步控制卡。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610652332.7A CN106250242A (zh) | 2016-08-10 | 2016-08-10 | 基于操作系统的内存复用方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610652332.7A CN106250242A (zh) | 2016-08-10 | 2016-08-10 | 基于操作系统的内存复用方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106250242A true CN106250242A (zh) | 2016-12-21 |
Family
ID=58078245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610652332.7A Pending CN106250242A (zh) | 2016-08-10 | 2016-08-10 | 基于操作系统的内存复用方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106250242A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110914799A (zh) * | 2018-06-30 | 2020-03-24 | 华为技术有限公司 | 一种反序列化方法、装置以及计算设备 |
CN112181663A (zh) * | 2020-10-15 | 2021-01-05 | 新华三大数据技术有限公司 | 一种内存调度方法、装置及计算机设备 |
CN113449316A (zh) * | 2020-03-27 | 2021-09-28 | 武汉瓯越网视有限公司 | 一种程序的加密解密方法、装置和可读存储介质 |
CN113485832A (zh) * | 2021-07-09 | 2021-10-08 | 支付宝(杭州)信息技术有限公司 | 用于对物理内存池进行分配管理的方法及装置、物理内存池 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101169759A (zh) * | 2007-11-08 | 2008-04-30 | Ut斯达康通讯有限公司 | 应用程序级的内存管理方法 |
CN102789407A (zh) * | 2012-06-18 | 2012-11-21 | 上海斐讯数据通信技术有限公司 | 内存块有效性检测方法 |
CN102955817A (zh) * | 2011-08-30 | 2013-03-06 | 腾讯数码(深圳)有限公司 | 一种基于共享内存的对象管理与恢复方法及系统 |
CN103885569A (zh) * | 2014-04-11 | 2014-06-25 | 珠海全志科技股份有限公司 | 内存的管理方法及装置 |
CN105589809A (zh) * | 2014-10-24 | 2016-05-18 | 中国科学院深圳先进技术研究院 | 一种内存管理方法及装置 |
-
2016
- 2016-08-10 CN CN201610652332.7A patent/CN106250242A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101169759A (zh) * | 2007-11-08 | 2008-04-30 | Ut斯达康通讯有限公司 | 应用程序级的内存管理方法 |
CN102955817A (zh) * | 2011-08-30 | 2013-03-06 | 腾讯数码(深圳)有限公司 | 一种基于共享内存的对象管理与恢复方法及系统 |
CN102789407A (zh) * | 2012-06-18 | 2012-11-21 | 上海斐讯数据通信技术有限公司 | 内存块有效性检测方法 |
CN103885569A (zh) * | 2014-04-11 | 2014-06-25 | 珠海全志科技股份有限公司 | 内存的管理方法及装置 |
CN105589809A (zh) * | 2014-10-24 | 2016-05-18 | 中国科学院深圳先进技术研究院 | 一种内存管理方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110914799A (zh) * | 2018-06-30 | 2020-03-24 | 华为技术有限公司 | 一种反序列化方法、装置以及计算设备 |
CN110914799B (zh) * | 2018-06-30 | 2023-02-28 | 华为云计算技术有限公司 | 一种反序列化方法、装置以及计算设备 |
CN113449316A (zh) * | 2020-03-27 | 2021-09-28 | 武汉瓯越网视有限公司 | 一种程序的加密解密方法、装置和可读存储介质 |
CN112181663A (zh) * | 2020-10-15 | 2021-01-05 | 新华三大数据技术有限公司 | 一种内存调度方法、装置及计算机设备 |
CN113485832A (zh) * | 2021-07-09 | 2021-10-08 | 支付宝(杭州)信息技术有限公司 | 用于对物理内存池进行分配管理的方法及装置、物理内存池 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105808633B (zh) | 数据归档方法和系统 | |
CN106250242A (zh) | 基于操作系统的内存复用方法及装置 | |
CN103412917B (zh) | 一种可扩展的多类型领域数据协调管理的数据库系统和管理方法 | |
CN100456303C (zh) | 文件删除方法和文件打开方法 | |
CN107038222A (zh) | 数据库缓存实现方法及其系统 | |
CN103530124B (zh) | 一种在Linux系统下共享热插拔设备的方法与装置 | |
CN102103497A (zh) | 有限状态机执行装置和方法、在应用中的建立和使用方法 | |
CN103942281B (zh) | 一种对持久化存储的对象进行操作的方法及装置 | |
RU2005120652A (ru) | Способы развертывания и свертывания для обеспечения управления свойствами файлов между системами объектов | |
US6941309B2 (en) | Object integrated management system | |
CN106104514A (zh) | 对利用文件存储系统实施的对象存储库中的对象的加速访问 | |
CN108205461A (zh) | 一种混合部署的虚拟化平台及部署方法 | |
CN102810070A (zh) | 高性能业务能力封装流程引擎及其流程控制方法 | |
JPH07244605A (ja) | データベースシステム及びその更新方法 | |
CN105631019A (zh) | 元数据扩展方法和元数据扩展装置 | |
CN102810115B (zh) | 一种多层分布式文档管理体系的实现方法 | |
CN108037937A (zh) | 一种动态更新资源的方法 | |
CN107704573A (zh) | 一种与业务耦合的智能缓存方法 | |
CN101217449B (zh) | 远程调用管理方法 | |
CN102404411A (zh) | 云存储系统的数据同步方法 | |
CN103701772A (zh) | 一种数字媒体内容资源云系统的构建方法 | |
CN110532058B (zh) | 容器集群服务的管理方法、装置、设备及可读存储介质 | |
CN112199200B (zh) | 资源调度方法、装置、计算机设备和存储介质 | |
CN101178724A (zh) | 临时表管理方法 | |
CN112799588A (zh) | 使用外部存储加载容器集群应用数据时的数据存储方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20161221 |
|
RJ01 | Rejection of invention patent application after publication |