[发明专利]一种Java对象引用方法、装置和介质在审
申请号: | 201711206347.1 | 申请日: | 2017-11-27 |
公开(公告)号: | CN107908567A | 公开(公告)日: | 2018-04-13 |
发明(设计)人: | 梁宇轩 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京同达信恒知识产权代理有限公司11291 | 代理人: | 郭润湘 |
地址: | 518044 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 java 对象 引用 方法 装置 介质 | ||
技术领域
本发明涉及计算机技术领域,尤其涉及一种Java对象引用方法、装置和介质。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
Java对象的引用包括强引用、软引用、弱引用和虚引用,其中,强引用是指创建一个对象并把这个对象赋给一个引用变量;强引用有引用变量指向时永远不会被垃圾回收。当内存空间不足,Java虚拟机宁愿抛出Out Of Memory Error(内存溢出)错误,使程序异常终止,也不会随意回收具有强引用的对象来解决内存不足的问题。
例如,在针对移动端开发的时候,调用系统的NSTimer(定时器),NSTimer会对调用对象进行强引用,如果不在页面结束时手动调用invalidate函数(使绘制的窗口无效),那么NSTimer则永远无法停止,页面也无法真正的释放,因此,此时NSTimer和页面进行了相互引用,无法被释放。又如,KVO(key-value observing)提供一种机制,当被观察对象的属性被修改后,则观察对象就会接受到通知。简单的说,就是每次指定的被观察对象的属性被修改后,KVO就会自动通知相应的观察对象了。在使用KVO时,如果注册了某个观察对象,在dealloc(对象释放)时不主动释放,则会有程序崩溃的问题存在。
发明内容
本发明实施例提供了一种Java对象引用方法、装置和介质,用以解决由于强引用无法自动释放导致占用内存过大而造成的程序崩溃问题。
本发明实施例提供了一种Java对象引用方法,包括:
在中间变量对象接收到第一变量对象请求引用第二变量对象的引用请求时,根据所述引用请求,利用所述中间变量对象调用所述第二变量对象,其中,所述中间变量对象为针对存在强引用关系的第一变量对象和第二变量对象所定义的;
针对所述中间变量对象,监控是否满足预设的释放条件;
在满足预设的释放条件时,调用释放函数释放所述中间变量对象。
可选地,在中间变量对象接收第一变量对象请求引用第二变量对象的引用请求之前,还包括:
针对所述中间变量对象,定义计数器;以及
所述方法,还包括:
如果所述中间变量每被引用一次,所述计数器的计数加1;
如果所述中间变量每被释放一次,所述计数器的计数减1。
可选地,在满足预设的释放条件时,调用释放函数释放所述中间变量,具体包括:
在所述计数器的计数为预设值时,调用释放函数释放所述中间变量。
可选地,所述第二变量对象包括定时器NSTimer和键值观察KVO;所述释放函数包括对象释放dealloc函数。
本发明实施例提供一种Java对象引用装置,包括:
第一调用单元,用于在中间变量对象接收到第一变量对象请求引用第二变量对象的引用请求时,根据所述引用请求,利用所述中间变量对象调用所述第二变量对象,其中,所述中间变量对象为针对存在强引用关系的第一变量对象和第二变量对象所定义的;
监控单元,用于针对所述中间变量对象,监控是否满足预设的释放条件;
第二调用单元,用于在所述监控单元监控到满足预设的释放条件时,调用释放函数释放所述中间变量对象。
可选地,本发明实施例提供的Java对象引用装置,还包括:
定义单元,用于在中间变量对象接收第一变量对象请求引用第二变量对象的引用请求之前,针对所述中间变量对象,定义计数器;
计数单元,用于如果所述中间变量每被引用一次,调整计数器的计数加1;如果所述中间变量每被释放一次,调整计数器的计数减1。
可选地,所述第二调用单元,具体用于在所述计数器的计数为预设值时,调用释放函数释放所述中间变量。
可选地,所述第二变量对象包括定时器NSTimer和键值观察KVO;所述释放函数包括对象释放dealloc函数。
本发明实施例提供另外一种Java对象引用装置,包括至少一个处理单元、以及至少一个存储单元,其中,所述存储单元存储有计算机程序,当所述程序被所述处理单元执行时,使得所述处理单元执行上述任一方法所述的步骤。
本发明实施例提供一种计算机可读介质,其存储有可由计算装置执行的计算机程序,当所述程序在计算装置上运行时,使得所述计算装置执行上述任一方法所述的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711206347.1/2.html,转载请声明来源钻瓜专利网。