快速释放java程序内存方法和装置与流程

文档序号:26003940发布日期:2021-07-23 21:21阅读:119来源:国知局
快速释放java程序内存方法和装置与流程

本申请涉及互联网技术领域,尤其涉及一种快速释放java程序内存方法和装置。



背景技术:

java语言是运行在java虚拟机上,虚拟机内存加上项目使用内存将会导致整体内存偏高,此时java项目的内存如果长时间得不到释放,将会导致内存溢出直接使得服务瘫痪。



技术实现要素:

本申请针对现有技术中,在运行java程序时,容易因为内存占用量过大,从而导致内存溢出甚至系统瘫痪的问题,提供一种快速释放java程序内存方法和装置,用于在一定程度上解决现有技术中该技术问题。

本申请的上述目的是通过以下技术方案来实现的:

第一方面,本申请实施例提供一种快速根据ip查询地域的方法,包括:

基于预设ip段数据和与预设ip段数据对应的预设地域数据,生成ip-地域表;

将所述ip-地域表导入项目内存中;

通过预设接口接收ip解析请求,并基于所述ip解析请求通过所述ip-地域表查询待查询ip的地域信息,得到ip解析结果;其中,所述ip解析请求中包括待查询ip,所述ip解析结果包括所述待查询ip对应的地域信息。

可选的,通过预设接口接收ip解析请求,并基于所述ip解析请求通过所述ip-地域表查询待查询ip的地域信息,得到ip解析结果包括:

将待查询ip定位到所述预设ip段数据中,其所属的ip段中的;

获取该所属的ip段的地域数据,确定为所述ip解析请求的ip解析结果。

可选的,还包括:在预设时间内根据预设系统中的ip数据和与所述ip数据对应的地域数据对所述ip-地域表进行更新。

可选的,还包括将所述ip解析结果进行显示或返回。

第二方面,本申请实施例还提供一种快速根据ip查询地域的装置,包括:

获取模块,用于获取ip解析请求和预设系统内的预设ip段数据以及与所述预设ip段数据对应的预设地域数据;其中,所述ip解析请求中包括待查询ip;

生成模块,用于基于所述预设ip段数据和所述与所述预设ip段数据对应的预设地域数据生成ip-地域表;

处理模块,用于在项目启动时,加载所述ip-地域表,并基于所述ip-地域表查询所述ip解析请求中的待查询ip所对应的地域信息,得到ip解析结果。

可选的,所述处理模块用于:

将待查询ip定位到所述预设ip段数据中,其所属的ip段中的;

获取该所属的ip段的地域数据,确定为所述ip解析请求的ip解析结果。

可选的,还包括更新模块;

所述更新模块用于在预设时间内根据预设系统内的ip数据和与所述ip数据对应的地域数据对所述ip-地域表进行更新。

可选的,还包括显示返回模块;

所述显示返回模块用于将所述ip解析结果进行显示或返回。

本申请的实施例提供的技术方案可以包括以下有益效果:

本申请的实施例提供的技术方案中,首先检测内存使用状态,判断内存使用量是否超过预设值;当内存使用量超过预设值时,检测内存使用量过高的原因;其中,所述内存使用量过高的原因包括数据存储量过大和线程使用量过大;当所述内存使用量过高的原因为数据存储量过大时,清除存储时间超过预设值的数据;当所述内存使用量过高的原因为线程使用量过大时,杀掉部分线程,保留预设值数量的线程。如此,在内存占用量较高时,通过自动清除存储时间的数据,和控制进行的线程,从而释放内存,提高程序以及系统的稳定性,解决了现有技术中,在运行java程序时,容易因为内存占用量过大,从而导致内存溢出甚至系统瘫痪的问题。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

图1为本申请实施例示出的一种快速释放java程序内存方法的流程示意图;

图2为本申请实施例示出的另一种快速释放java程序内存方法的流程示意图;

图3为本申请实施例示出的一种快速释放java程序内存装置的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

图1为本申请实施例示出的一种快速释放java程序内存方法的流程示意图,如图1所示,本申请实施例提供的快速释放java程序内存方法包括:

s101、检测内存使用状态,判断内存使用量是否超过预设值;

具体的,首先获取内存的使用情况,在预设装置或系统中,对内存使用量是否过高进行数据设定,既设置预设值,当内存使用量未超过该预设值时,判断此时,内存使用量为运行正常;当内存使用量超过该预设值时,判断此时,内存使用量为过高,既内存升高,此时需要对内存进行释放。

s102、当内存使用量超过预设值时,检测内存使用量过高的原因;其中,所述内存使用量过高的原因包括数据存储量过大和线程使用量过大;

具体的,在实际应用中,内存升高的原因,可能是线程过多,也有可能是数据存储量过大;所以当检测到内存升高的时候,收悉分析内存升高的原因,判断内存使用量过高的原因具体是线程量过多还是数据存储量过大,针对两种不同的情况进行不同的措施。

s103、当所述内存使用量过高的原因为数据存储量过大时,清除存储时间超过预设值的数据;当所述内存使用量过高的原因为线程使用量过大时,杀掉部分线程,保留预设值数量的线程。

在实际应用中,在将数据存储在内存中时,首先根据数据存入内存的时间,对数据进行标记,既在内存中存储数据的时候加上当前时间;然后实时的对内存中的数据进行轮训。当所述内存使用量过高的原因为数据存储量过大时,首先获取内存中数据的存入时间信息,基于数据的所述存入时间信息,判断数据的存入时间是否超过预设值;然后,清除存储时间超过预设值的数据。

例如一个具体的实施方式中,在内存中存储数据的时候加入当前时间,并在后续对内存中的数据进行轮训,当内存中存储数据量过大导致内存占用量过大时,自动将存入内存时间距当期时间间隔超过一周的数据进行清楚,从而释放内存,保证装置、系统的稳定运行。

另一方面,导致内存占用量的原因还可能是线程使用过多导致的,在本申请实施例提供的快速释放java程序内存方法,对线程的使用量进行监听,在检测到内存占有过高时,并且判断导致内存占用过高时,既当前线程使用量超过预设值时,杀掉部分线程,保留预设数量的线程,如将线程量保持在3-5个,将多余线程进行强制杀掉。

进一步的,本申请实施例提供的快速释放java程序内存方法,还包括检测内存使用状态变化趋势,在检测到内存急速升高时,自动清空内存中的数据,并杀掉所有进行或者线程,以保证服务的正常云行行行。

本申请实施例提供的快速释放java程序内存方法,在内存占用量过高时,根据实际原因,清理过期数据,或杀掉部分线程,而且还通过检测内存的变化情况,在内存快速升高时,自动清除数据和杀掉线程,合理的保持内存使用率,放置内存升高而引起的项目崩溃,以及快速降低内存的消耗,使得程序能够稳定的运行。

图2为本申请实施例示出的另一种快速释放java程序内存方法的流程示意图,如图2所示:本申请实施例提供的快速释放java程序内存方法包括:

首先,根据对内存使用情况进行检测,当因为内存中放入的数据量过大时,根据在存储数据时记录的储存时间对数据的存储时间进行轮训判断,既判断数据存储时间,距今是否超过预设时间,如一周,将超过一周的数据直接清空,实现内存释放;第二方面,通过监听线程使用量判断,当线程使用过多导致内存升高时,根据预先设置的值,判断线程使用量超过预设值,如5个时,杀掉部分线程,实现内存释放;第三方面,通过对内存状态的检测,当检测到内存急速升高时,可以清空内存中的所有数据和杀掉所有线程,还可以直接重启项目,内存重置,实现内存释放。

基于同一个发明构思,本申请实施例还提供一种快速释放java程序内存装置,图3为本申请实施例示出的一种快速释放java程序内存装置的结构示意图,如图3所示,本申请实施例提供的快速释放java程序内存装置包括:

检测模块1,用于检测内存使用情况,判断内存使用量是否超过预设值;

判断模块2,用于当内存使用量超过预设值时,检测并判断内存使用量过高的原因;其中,所述内存使用量过高的原因包括数据存储量过大和线程使用量过大;

释放模块3,用于在所述内存使用量过高的原因为数据存储量过大时,清除存储时间超过预设值的数据;在所述内存使用量过高的原因为线程使用量过大时,杀掉部分线程,保留预设值数量的线程。

进一步的,还包括标记模块;所述标记模块用于将存储到内存的数据,根据存储时间进行标记,供所述检测模块1对数据进行轮训;其中,标记内容包括数据的存入时间信息。

需要说明的是,所述释放模块3用于在所述内存使用量过高的原因为数据存储量过大时,清除存储时间超过预设值的数据包括:当所述内存使用量过高的原因为数据存储量过大时,获取数据的存入时间信息;基于数据的所述存入时间信息,判断数据的存入时间是否超过预设值;清除存储时间超过预设值的数据。

进一步的,所述检测模块1还用于检测内存占用状态变化;供所述释放模块3在检测到内存占用升高速度超过预设值时,自动清空内存中的数据和杀掉所有线程。

可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。

需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。

应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1