Groovy PermGen Full GC 问题解析以及解决

简介: Groovy Full gc 问题的解决

线上环境 使用Groovy脚本为业务提供自定义配置 结果 没几天就fullGC 并且持续很长时间,才降下来,
groovy 常见的三种引入方式都会有对应的问题,:
核心的问题是Groovy会缓存掉曾经执行的代码片段成为META-class ,如果每次执行的代码都不一样。那么缓存的类会越来越多。

相应的解决办法:

<dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
    <version>2.4.7</version>
</dependency>
AI 代码解读
//清除groovy 里面的缓存, 防止fullGC,也可以定时来做
GroovyClassLoader groovyClassLoader = engine.getClassLoader();
Class[] classes = engine.getClassLoader().getLoadedClasses();
for (Class clazz : classes) {
    GroovySystem.getMetaClassRegistry().removeMetaClass(clazz);
    groovyClassLoader.clearCache();
    try {
        Field globalClassValue = ClassInfo.class.getDeclaredField("globalClassValue");
        globalClassValue.setAccessible(true);
        GroovyClassValue classValueBean = (GroovyClassValue) globalClassValue.get(null);
        classValueBean.remove(clazz);

    } catch (Throwable e) {

    }
}
groovyClassLoader.clearCache();
ClassInfo.clearModifiedExpandos();
/**
 * Using java beans (e.g. Groovy does it) results in all referenced class infos being cached in ThreadGroupContext. A valid fix
 * would be to hold BeanInfo objects on soft references, but that should be done in JDK. So let's clear this cache manually for now,
 * in clients that are known to create bean infos.
 */
Introspector.flushCaches();
AI 代码解读
目录
打赏
0
0
0
0
1
分享
相关文章
深入解析JVM内部结构及GC机制的实战应用
深入解析JVM内部结构及GC机制的实战应用
GC Cause解析
通常,在基于Java生态体系中的应用程序抛出异常时,生产环境都会通过gc log[当然,也有2愣子直接去线上环境进行各种骚操作]去捕获各种可疑线索,以便快速、高效定位及解决问题。
359 0
JVM CMS GC算法解析
JVM CMS GC算法解析
125 0
Java虚拟机 CMS GC 调优解析
随着 JDK 版本的不断升级,其 GC 策略也随之不停革新,从早期的 1.4 到如今的 11(本文仅讨论在线上环境落地规模较大的版本),其对应的 GC 策略也随之由 Serial、Parallel、CMS 演进至当前的 G1 甚至即将落地的 ZGC 。每一次的调整无不是基于环境的适配性以及业务场景特性,无论如何,只要能够基于特定的操作系统内核、物理内存、JDK版本以及业务特性,达到收益最大化,采用何种实现策略都不为过。当然,还是建议大家以官方的推荐为准,基于自己的业务场景进行不断优化调整,这样才能保证万无一失,使得我们的业务能够健康发展。
280 0
【分享】宜搭集成自动化,Groovy节点一般用法,解析JSON数据
【分享】宜搭集成自动化,Groovy节点一般用法,解析JSON数据 by 页一
1434 0
【分享】宜搭集成自动化,Groovy节点一般用法,解析JSON数据
Java虚拟机 G1 GC 调优解析
在上篇文章中,我们解析了 Java 虚拟机体系生态中基于 CMS GC 策略的调优场景及基本案例,具体链接为:Java虚拟机 CMS GC 调优解析。本文则重点介绍另一款当前比较流行的 GC 策略 - G1。
570 0
Java GC Log Time解析
通常,我们在了解应用服务的性能时,都会去在所定义的垃圾收集日志文件中去分析GC活动轨迹,在gc.log文件中,我们经常会看到每个GC事件所打印的三种时间类型: “ User ”、“ Sys ”及“ Real ”,它们分别表示什么呢?具有哪些象征性意义呢?本文将结合作者的相关实际经验进行简要解析,希望阅读完本篇文章后对大家在GC Log这块的问题定位与分析有所帮助。
327 0
GC日志分析工具-GCeasy解析
一款新的GC日志分析仪器,业界首个基于人工智能机器学习指导的垃圾收集日志分析工具。 GCeasy具有内置的智能功能,可以自动检测JVM和Android GC日志中的问题并为之推荐解决方案。
1105 0
CMS 触发GC(Allocation Failure)解析
针对GC中发生的"Allocation Failure"
1043 0

推荐镜像

更多
  • DNS
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等