一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于JAVA的内存溢出方法与流程

2022-05-27 00:16:51 来源:中国专利 TAG:

一种基于java的内存溢出方法
技术领域
1.本发明涉及的是it与软件开发技术领域,具体涉及一种基于java的内存溢出方法。


背景技术:

2.在日常生产开发中,当程序在服务器无法正常工作时,服务器日志可能会生成内存溢出的报错,这种原因是因为jvm虚拟的内存空间不足以支持程序的正常运行,造成这种情况的一部分原因是资源无法合理运用。虽然java是垃圾回收语言的一种,开发者无需特意管理内存分配,但是java中还是存在着许多内存泄漏的可能性,如果不好好处理内存泄漏,会导致app内存单元无法释放被浪费掉,最终导致内存全部占据堆栈(heap)挤爆进而程序崩溃。目前,一般解决的方式多为扩展物理机内存,或者实现内存监控操作,发现内存泄漏自动重启系统等,但无法从根本原因上解决内存泄露问题。基于此,开发一种基于java的内存溢出方法尤为必要。


技术实现要素:

3.针对现有技术上存在的不足,本发明目的是在于提供一种基于java的内存溢出方法,合理安排数据占有空间的利用,使不需要的资源空间得到释放,减少内存泄漏的隐患,减少从而导致的内存溢出情况,使服务器正常运行,易于推广使用。
4.为了实现上述目的,本发明是通过如下的技术方案来实现:一种基于java的内存溢出方法,其步骤为:
5.(1)首先将栈定义为root;
6.(2)遍历栈中所有的对象的引用;
7.(3)再遍历一遍栈中的对象;
8.(4)通过栈中的对象的引用去查找堆中没有被指向的对象,使用内置的callable函数callable(func)用于检查对象是否可调用,未被引用的对象为不可到达对象,将不可到达的对象进行垃圾回收,从而减少内存泄漏。
9.作为优选,所述的步骤(2)使用for循环的普通遍历方式或者使用栈的递归遍历方式,遍历栈中的对象。
10.作为优选,所述的步骤(3)使用遍历栈对象的方法遍历堆中的对象。
11.本发明的有益效果:本方法从jvm虚拟机底层层面进行的代码优化,合理安排数据占有空间的利用,使不需要的资源空间得到释放,从而减少内存泄漏的隐患,减少从而导致的内存溢出情况,使服务器正常运行,应用前景广阔。
附图说明
12.下面结合附图和具体实施方式来详细说明本发明;
13.图1为本发明的主流程图;
14.图2为本发明的技术流程图。
具体实施方式
15.为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。
16.参照图1-2,本具体实施方式采用以下技术方案:一种基于java的内存溢出方法,其步骤为:
17.(1)首先将栈定义为root;
18.(2)遍历栈中所有的对象的引用:可通过使用for循环的普通遍历方式或者使用栈的递归遍历方式,遍历栈中的对象;
19.(3)再遍历一遍栈中的对象:使用遍历栈对象的方法遍历堆中的对象;
20.(4)因栈中的对象的引用执行完毕就会被删除,通过栈中的对象的引用去查找堆中没有被指向的对象,使用内置的callable函数callable(func)用于检查对象是否可调用,返回false一定不可调用,未被引用的对象为不可到达对象,将不可到达的对象进行垃圾回收,从而减少内存泄漏。
21.本具体实施方式在代码层面,将一个个引用的对象用过强转弱的引用方式,使用weakreference重新定义对象,没有这样的对象称之为软引用对象,当内存不足时自动将没有指示的对象、没有任何强引用对象指向它,进行垃圾回收。
22.本具体实施方式依据java在jvm所创造的虚拟数据存储区运行,从jvm虚拟机底层层面进行代码优化,根据内存特点,从代码层面以及jvm底层维度这一根本原因彻底解决因未到达对象造成的内存泄漏问题,能够合理安排数据占有空间的利用,使不需要的资源空间得到释放,解决大多数因内存泄漏导致的内存溢出问题,减少内存泄漏的隐患,减少从而导致的内存溢出情况,使服务器正常运行,还能降低企业对服务器的成本支出,减少对服务器的维护成本,高效使用服务器,提高服务器生产效率,减少宕机的出现,具有广阔的市场应用前景。
23.以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。


技术特征:
1.一种基于java的内存溢出方法,其特征在于,其步骤为:(1)首先将栈定义为root;(2)遍历栈中所有的对象的引用;(3)再遍历一遍栈中的对象;(4)通过栈中的对象的引用去查找堆中没有被指向的对象,使用内置的callable函数callable(func)用于检查对象是否可调用,未被引用的对象为不可到达对象,将不可到达的对象进行垃圾回收,从而减少内存泄漏。2.根据权利要求1所述的一种基于java的内存溢出方法,其特征在于,所述的步骤(2)使用for循环的普通遍历方式或者使用栈的递归遍历方式,遍历栈中的对象。3.根据权利要求1所述的一种基于java的内存溢出方法,其特征在于,所述的步骤(3)使用遍历栈对象的方法遍历堆中的对象。

技术总结
本发明公开了一种基于JAVA的内存溢出方法,它涉及IT与软件开发技术领域。其步骤为:首先将栈定义为root;使用for循环的普通遍历方式或者使用栈的递归遍历方式,遍历栈中所有的对象的引用;使用遍历栈对象的方法再遍历一遍栈中的对象;通过栈中的对象的引用去查找堆中没有被指向的对象,使用内置的callable函数检查对象是否可调用,未被引用的对象为不可到达对象,将不可到达的对象进行垃圾回收,从而减少内存泄漏。本发明合理安排数据占有空间的利用,使不需要的资源空间得到释放,减少内存泄漏的隐患,减少从而导致的内存溢出情况,使服务器正常运行,应用前景广阔。应用前景广阔。应用前景广阔。


技术研发人员:尤松波 周正虎
受保护的技术使用者:天翼电子商务有限公司
技术研发日:2021.12.30
技术公布日:2022/5/25
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献