一种内存监听方法及装置制造方法及图纸

技术编号:25308305 阅读:35 留言:0更新日期:2020-08-18 22:27
本申请提供一种内存监听方法及装置。其中,所述方法应用于安卓操作系统的终端设备,所述安卓操作系统中安装有应用程序,所述方法包括:在应用程序中以PhantomReference方式引用所述应用程序内的Object对象,并为所述PhantomReference关联ReferenceQueue对象;启动用于读取所述ReferenceQueue对象的监听线程;如果所述ReferenceQueue对象不为空,读取所述ReferenceQueue对象中存放的PhantomReference对象,并在成功读取到所述PhantomReference对象时,确定所述PhantomReference对象引用的Object对象所在的应用程序发生了垃圾回收行为;判断所述发生了垃圾回收行为的应用程序的已用内存量是否超过阈值,如果是,确定所述发生了垃圾回收行为的应用程序进入了低内存状态。应用本申请,可以及时在应用程序中监听到低内存状态的发生。

【技术实现步骤摘要】
一种内存监听方法及装置
本申请涉及互联网
,尤其涉及一种内存监听方法及装置。
技术介绍
在安卓(Android)操作系统的终端设备中,可以安装各种功能的应用程序(Application,APP)。每个APP都有一个内存占用的上限。当某个APP占用的内存超过该上限时,就会发生OOM(OutOfMemory)崩溃,从而导致APP死机、闪退等各种异常。为此,安卓软件开发人员会有“APP低内存监听”的需求,希望可以在APP剩余可用内存较低时,得到预警回调,从而释放一些占用的内存,使得APP占用内存不至于超过上限,这样APP可以运行的更超久更稳定。总所周知,Android操作系统是谷歌(Google)公司开发的一款开源的操作系统。安卓操作系统中并没有设计针对APP级别的低内存监听和回调机制。因此,虽然安卓软件开发人员有APP低内存监听的需求,但却无法实现APP低内存监听。
技术实现思路
有鉴于此,本申请提供一种内存监听方法及装置和电子设备。用于解决上述的无法及时确定APP出现低内存的问题。具体地,本申请是通过如下技术方案实现的:第一方面,提供了一种内存监听方法,应用于安卓操作系统的终端设备,所述安卓操作系统中安装有应用程序,所述方法包括:在应用程序中以PhantomReference方式引用所述应用程序内的Object对象,并为所述PhantomReference关联ReferenceQueue对象;启动用于读取所述ReferenceQueue对象的监听线程;如果所述ReferenceQueue对象不为空,读取所述ReferenceQueue对象中存放的PhantomReference对象,并在成功读取到所述PhantomReference对象时,确定所述PhantomReference对象引用的Object对象所在的应用程序发生了垃圾回收行为;判断所述发生了垃圾回收行为的应用程序的已用内存量是否超过阈值,如果是,确定所述发生了垃圾回收行为的应用程序进入了低内存状态。可选的,所述方法还包括:在所述PhantomReference对象引用的Object对象被垃圾回收器回收后,将所述PhantomReference对象加入ReferenceQueue对象中。可选的,所述方法还包括:回收所确定的进入低内存状态的应用程序所占用的内存资源;其中,所回收的内存资源为应用程序中非必须功能运行所占用的内存。可选的,所述方法还包括:如果所述ReferenceQueue对象为空时,阻塞所述监听线程;其中,所述监听线程由ReferenceQueue对象更新后唤醒。可选的,在确定所述PhantomReference对象引用的Object对象所在的应用程序发生了垃圾回收行为之后,所述方法还包括:重新在所述应用程序中以PhantomReference方式引用所述应用程序内的Object对象,并为所述PhantomReference关联ReferenceQueue对象。第二方面,提供了一种内存监听装置,应用于安卓操作系统的终端设备,所述安卓操作系统中安装有应用程序,所述装置包括:引用单元,在应用程序中以PhantomReference方式引用所述应用程序内的Object对象,并为所述PhantomReference关联ReferenceQueue对象;启动单元,启动用于读取所述ReferenceQueue对象的监听线程;读取单元,如果所述ReferenceQueue对象不为空,读取所述ReferenceQueue对象中存放的PhantomReference对象,并在成功读取到所述PhantomReference对象时,确定所述PhantomReference对象引用的Object对象所在的应用程序发生了垃圾回收行为;确定单元,判断所述发生了垃圾回收行为的应用程序的已用内存量是否超过阈值,如果是,确定所述发生了垃圾回收行为的应用程序进入了低内存状态。可选的,所述装置还包括:回收单元,在所述PhantomReference对象引用的Object对象被垃圾回收器回收后,将所述PhantomReference对象加入ReferenceQueue对象中。可选的,所述装置还包括:释放单元,回收所确定的进入低内存状态的应用程序所占用的内存资源;其中,所回收的内存资源为应用程序中非必须功能运行所占用的内存。可选的,所述装置还包括:阻塞单元,如果所述ReferenceQueue对象为空时,阻塞所述监听线程;其中,所述监听线程由ReferenceQueue对象更新后唤醒。可选的,在读取单元之后,所述装置还包括:新建单元,重新在所述应用程序中以PhantomReference方式引用所述应用程序内的Object对象,并为所述PhantomReference关联ReferenceQueue对象。第三方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;所述处理器被配置为上述任一项所述的内存监听方法。本申请实施例,提供了一种内存监听方案,旨在及时确定安卓操作系统中运行的应用程序APP出现低内存(低可用内存)。通过ReferenceQueue对象和PhantomReference对象监听垃圾回收器GC的发生;由于GC只有在内存有压力时才会触发内存回收,因此以垃圾回收器GC回收内存的时间触发监听APP内存是最及时的,可以最快地确定APP是否出现低内存。附图说明图1是本申请一示例性实施例示出的一种内存监听方法的流程图;图2是本申请一示例性实施例示出的监听GC发生的示意图;图3是本申请一示例性实施例示出的一种内存监听装置的硬件结构图;图4是本申请一示例性实施例示出的一种内存监听装置的模块示意图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的方式并不代表与本申请相一致的所有方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使本文档来自技高网...

【技术保护点】
1.一种内存监听方法,其特征在于,应用于安卓操作系统的终端设备,所述安卓操作系统中安装有应用程序,所述方法包括:/n在应用程序中以PhantomReference方式引用所述应用程序内的Object对象,并为所述PhantomReference关联ReferenceQueue对象;/n启动用于读取所述ReferenceQueue对象的监听线程;/n如果所述ReferenceQueue对象不为空,读取所述ReferenceQueue对象中存放的PhantomReference对象,并在成功读取到所述PhantomReference对象时,确定所述PhantomReference对象引用的Object对象所在的应用程序发生了垃圾回收行为;/n判断所述发生了垃圾回收行为的应用程序的已用内存量是否超过阈值,如果是,确定所述发生了垃圾回收行为的应用程序进入了低内存状态。/n

【技术特征摘要】
1.一种内存监听方法,其特征在于,应用于安卓操作系统的终端设备,所述安卓操作系统中安装有应用程序,所述方法包括:
在应用程序中以PhantomReference方式引用所述应用程序内的Object对象,并为所述PhantomReference关联ReferenceQueue对象;
启动用于读取所述ReferenceQueue对象的监听线程;
如果所述ReferenceQueue对象不为空,读取所述ReferenceQueue对象中存放的PhantomReference对象,并在成功读取到所述PhantomReference对象时,确定所述PhantomReference对象引用的Object对象所在的应用程序发生了垃圾回收行为;
判断所述发生了垃圾回收行为的应用程序的已用内存量是否超过阈值,如果是,确定所述发生了垃圾回收行为的应用程序进入了低内存状态。


2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述PhantomReference对象引用的Object对象被垃圾回收器回收后,将所述PhantomReference对象加入ReferenceQueue对象中。


3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
回收所确定的进入低内存状态的应用程序所占用的内存资源;其中,所回收的内存资源为应用程序中非必须功能运行所占用的内存。


4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述ReferenceQueue对象为空时,阻塞所述监听线程;其中,所述监听线程由ReferenceQueue对象更新后唤醒。


5.根据权利要求1所述的方法,其特征在于,在确定所述PhantomReference对象引用的Object对象所在的应用程序发生了垃圾回收行为之后,所述方法还包括:
重新在所述应用程序中以PhantomReference方式引用所述应用程序内的Object对象,并为所述PhantomReference关联ReferenceQueue对象。


6.一种内存监听装置,其特征在于,应用于安卓操作系统的终端设备,所述安卓操作...

【专利技术属性】
技术研发人员:张旭童
申请(专利权)人:汉海信息技术上海有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1