[发明专利]一种Java虚拟机的垃圾回收、负载均衡方法及系统在审
申请号: | 201710556608.6 | 申请日: | 2017-07-10 |
公开(公告)号: | CN107291555A | 公开(公告)日: | 2017-10-24 |
发明(设计)人: | 张伟 | 申请(专利权)人: | 上海斐讯数据通信技术有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F9/455 |
代理公司: | 杭州千克知识产权代理有限公司33246 | 代理人: | 周希良,吴辉辉 |
地址: | 201616 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 java 虚拟机 垃圾 回收 负载 均衡 方法 系统 | ||
技术领域
本发明涉及负载均衡技术领域,尤其涉及一种Java虚拟机的垃圾回收、负载均衡方法及系统。
背景技术
随着互联网技术的发展,服务器的应用越来越广泛,而Java作为最流行的高级语言之一,被普遍应用于很多公司。为了提升服务器的性能,目前普遍采用负载均衡器加业务服务器模式。
由于Java底层采用了JVM技术,有效解决了C/C++所带来的内存泄露问题,但其垃圾回收机制影响了其性能。JVM垃圾回收主要分两种,Monitor GC和Full GC。Monitor GC的时间较短,一般几十毫秒即可完成,对业务不会有太大影响,但Full GC有时候可能会长达数十秒,这种情况下就可能会影响业务。
Java虚拟机(JVM)有分配内存的指令,却没有释放内存的指令。JVM自身负责决定如何释放、以及何时释放不再被应用系统引用的对象所占据的内存。通常,这个任务由JVM中的垃圾收集器来完成。
垃圾收集器的主要作用就是按一定的内存垃圾回收(GC)算法,自动回收不再被引用的对象所占用的内存。此外,垃圾收集器也可能移动那些还在被引用的对象,以此减少内存碎片。JVM中的内存管理,实质上是通过不同的垃圾收集器来实现的。垃圾收集器是依据垃圾收集算法运行的系统线程。
目前,主要的内存垃圾回收(GC)算法在做全局内存垃圾回收(Full GC)时,只有内存垃圾回收线程在工作,应用中所有其它线程会暂停工作,也就是说,此时系统会暂时停止响应外部请求,导致系统出现“假死”现象。
公开号为CN103514102A的专利提供了一种Java虚拟机实现内存垃圾回收的方法及装置,包括监控系统的内存垃圾回收情况,JVM触发全局内存垃圾回收前,创建新的Java应用环境,将原Java应用系统环境的后续外部请求转发到新Java应用环境的JVM中。该发明在JVM触发全局内存垃圾回收前,即创建好新的JVM应用环境,以便将原JVM应用环境中的后续外部请求在全局内存垃圾回收前就转移至新的JVM中,从而消除了原JVM出现的“假死”现象对应用执行的影响,同时也提高了系统的可用性。但是该发明还需创建新的JVM应用环境,操作复杂。
发明内容
本发明要解决的技术问题目的在于提供一种Java虚拟机的垃圾回收、负载均衡方法及系统,用以解决Java虚拟机服务器在做全局垃圾回收时服务器产生停顿,影响业务的问题。
为了实现上述目的,本发明采用的技术方案为:
一种Java虚拟机的垃圾回收方法,包括步骤:
S1、通过业务服务器的检测进程检测Java虚拟机的老年代使用率;
S2、判断所述老年代使用率是否达到预设阈值,若是,发送暂停当前业务服务器的业务请求的通知至负载均衡器的通知进程并开始垃圾回收,否则,继续等待。
进一步地,还包括步骤:
S3、通过JVM日志判断所述垃圾回收是否已经结束,若是,则发送恢复当前业务服务器的业务请求的通知至所述负载均衡器的通知进程;否则,继续等待。
进一步地,步骤S1之前还包括步骤:
按预设时间间隔T检测Java虚拟机的JVM信息和JVM日志。
一种Java虚拟机的负载均衡方法,包括步骤:
SA、通过负载均衡器的通知进程检测负载均衡列表;
SB、当收到业务服务器发送的暂停业务请求的通知时,暂停所述业务服务器的业务请求并将所述业务服务器移除所述负载均衡列表。
进一步地,还包括步骤:
SC、当收到所述暂停业务请求的业务服务器发送的恢复业务请求的通知时,恢复所述业务服务器的业务请求并将所述业务服务器重新添加至所述负载均衡列表。
一种Java虚拟机的垃圾回收系统,包括:
老年代检测模块,用于通过业务服务器的检测进程检测Java虚拟机的老年代使用率;
垃圾回收模块,用于判断所述老年代使用率是否达到预设阈值,若是,发送暂停当前业务服务器的业务请求的通知至负载均衡器的通知进程并开始垃圾回收,否则,继续等待。
进一步地,还包括:
回收结束模块,用于通过JVM日志判断所述垃圾回收是否已经结束,若是,则发送恢复当前业务服务器的业务请求的通知至所述负载均衡器的通知进程;否则,继续等待。
进一步地,还包括:
定时检测模块,用于按预设时间间隔T检测Java虚拟机的JVM信息和JVM日志。
一种Java虚拟机的负载均衡系统,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海斐讯数据通信技术有限公司,未经上海斐讯数据通信技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710556608.6/2.html,转载请声明来源钻瓜专利网。