当前位置: 首页 > 知识库问答 >
问题:

JVM内存清理完毕,没有任何GC activity

许曦
2023-03-14

我目前正在运行一个长时间运行的JVM应用程序(其中包括groovy类),我观察到了一些奇怪的行为。

我运行了应用程序并更新了我的Groovy类(正确地清理了元类信息等--我知道没有泄漏),所以我知道有几个类可以从permgen收集(通常我观察到permgen没有被急切地收集--我相信只是完整的GC收集了permgen,所以对于这种状态并不罕见)。奇怪的是,如果我让应用程序在没有activity的情况下运行,大约一个小时后,内存使用量突然下降(堆和permgen,但最明显的是permgen),但visualvm报告没有发生GC/CPU activity。

下面是我的visualvm日志记录的屏幕截图

我的问题是,没有注册GC activity的permgen怎么会有这么大的下降(~80MB)?visualvm通常会很好地记录GC/CPU activity。

共有1个答案

松成和
2023-03-14

尝试安装visualgc插件,了解gc在这种情况下如何工作。我猜很多新一代对象掉了,但是我不能通过截图告诉它。

 类似资料:
  • 因为自己的手机比较卡,所以就想写个小工具改善一下手机卡顿的情况,既然写了就又顺手写点自定义的View,最后又顺手把它上线了,其实基本没什么人下载,现在把原来项目的友盟数据统计和有米广告去掉了开源出来给大家看看。 apk下载:http://zhushou.360.cn/detail/index/soft_id/2366842 开源地址:http://git.oschina.net/cocobaby/

  • 我想创建一个完全不使用任何XMLs的Spring应用程序(不web.xml不context.xml或任何东西)。到目前为止,它似乎工作得很好,除了我的视图解析器有一些问题,我不能自己解决。 这是我的WebApplicationInitializer 还有我的spring配置 最后是我的控制器 位于。 因此,如果我在控制器中使用注释,那么控制器会给我响应“index”,因此我知道我的配置至少在某种程

  • 问题内容: 使用所有可用内存后,Redis将如何处理XADD?是否会从流中删除最旧的项目,并添加新的项目?添加后,旧项目仍会存在于AOF文件中吗?它会抛出错误而不添加新项吗?我应该期待什么? 问题答案: 流是所有其他人一样的数据结构,这样的Redis将尊重并在RAM中的压力的情况下。根据策略,新的写请求将被拒绝,或者现有密钥(是否存在流)将被驱逐。 在https://redis.io/topics

  • 我想改变(增加)Java内存限制(Windows PC上的JRE)。我到处都遵循以下命令: -xms设置初始Java堆大小 -Xmx设置最大Java堆大小 例如-Xmx1024m。 但我的问题是在哪里!我必须输入这个命令吗?抱歉这个初学者的问题。通常我对java没有任何接触。

  • Java虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是: 程序计数器 ava虚拟机栈 本地方法栈 堆 方法区 下面对这五个区域展开深入的介绍。 程序计数器 什么是程序计数器? 程序计数器是一块较小的内存空间,可以把它看作当前线程正在执行的字节码的行号指示器。也就是说,程序计数器里面记录的是当前线程正在执行的那一条字节码指令的地址。 注:但是,如果当前线程正

  • 问题内容: 我只是为了好玩而创建了一个项目,该项目创建了大约5 GB的内存,并且没有删除它。只要应用程序正在运行,“内存泄漏”就在那里。我第二次关闭应用程序后,内存在2秒内恢复正常,就好像我的程序从未运行过一样。因此必须提出问题。 Windows 7完成处理后,是否会清理掉程序造成的内存泄漏? 所有Windows版本都这样做吗? Linux和Mac OS X环境会这样做吗? 问题答案: 当程序终止