fullgc一小时发生一次的原因
问题:之前在线上遇到过一个问题,每一小时都会执行fullgc,但是此时的堆内存大小是足够的。
分析:
当前我的tomcat的版本是6.0.35,此时tomcat有这样的配置:
6.0.35的org.apache.catalina.core.JreMemoryLeakPreventionListener的261行有如下代码
if (gcDaemonProtection) {try {
Class<?> clazz = Class.forName("sun.misc.GC");Method method = clazz.getDeclaredMethod("requestLatency",new Class[] {long.class});method.invoke(null, Long.valueOf(3600000));
表明一小时显示的调用一次调用System.gc()。(按照sun jdk规范,不保证立即执行,并且注意的是,我们有时候监控到的fullGC不一定是这个触发的。)
我又看了6.0.43(6的最新版本)Class<?> clazz = Class.forName("sun.misc.GC");Method method = clazz.getDeclaredMethod("requestLatency",new Class[] {long.class});method.invoke(null, Long.valueOf(Long.MAX_VALUE - 1));
这个世界触发值,已经改为LONG的最大值,说明tomcat的高版本不再是一个小时显示的调用System.gc()了.
解决方案:
a.可以注释掉tomcat->server.xml的这个 <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
b.看代码逻辑,可以加个gcDaemonProtection开关,<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" gcDaemonProtection="false"/>
c 通过 -XX:+DisableExplicitGC 来变相消除显式调用full GC。
d 可以升级tomcat。
参考:http://blog.csdn.net/chenleixing/article/details/46706039
fullgc一小时发生一次的原因相关推荐
- MOSS中图形化通过记录日志的方式来进行查看“发生意外错误”的原因WSP下载
大家如果有需要制作SharePoint解决方案包的话,不妨试一试 WSPBuilder,它的作者是 Carsten Keutmann,把上次的"MOSS中图形化通过记录日志的方式来进行查看& ...
- java发生fullgc的时机_2021-01-02:java中,MinorGC、MajorGC、FullGC 什么时候发生?
福哥答案2021-01-02: MinorGC 在年轻代空间不足的时候发生. MajorGC 指的是老年代的 GC,出现 MajorGC 一般经常伴有 MinorGC. FullGC 老年代无法再分配 ...
- VS发生RC1107错误的原因
最近MFC程序中,用VS的资源编辑打开时,老是发生 fatal error RC1107: invalid usage; use RC /? for Help 这种错误,记得前几天解决过一次,但是当时 ...
- 什么情况下会发生full Gc?如何排查频繁发生full Gc的原因?
GC就是Java的垃圾回收机制,要了解什么情况下会发生GC(即GC得触发条件),我们需要先了解JVM的内存模型结构,之前一篇文章已经详细讲解了Jvm的内存模型结构,而通常来说,GC主要针对的是堆(ja ...
- 多多参谋:如果拼多多48小时没有物流信息怎么办?原因是什么?
事实上,一些拼多多企业也非常关心商店的售后服务,但不可避免地会出现这样或那样的售后问题.例如,48小时内没有物流信息.在这种情况下我们该怎么办? 多多情报通注册入口 如果拼多多48小时没有物流信息怎么 ...
- 详细分析内部类的发生内存泄漏的原因
文章目录 避免内部类中的内存泄漏 步骤1:内部类引用其外部类 步骤2:构造函数获取封闭的类引用 步骤3:声明一种新方法 内存泄漏的解剖 避免内部类中的内存泄漏 使用内部类时要当心垃圾收集 如果您已了解 ...
- IBinder进行向下类型转换发生ClassCastException的可能原因
参考.https://stackoverrun.com/cn/q/3910896 1.If service to bind is in different process with the calle ...
- python 读取图像发生自动旋转的原因
手机或者相机拍摄照片后,传到电脑中,使用PIL读取时有时会发生旋转: 查看两类图像的具体属性,发现仅有EXIF值有差异 通过查阅资料发现:EXIF代表了图像的方位信息,包含旋转0°.90°.180°和 ...
- 项目一启动就发生两次FGC原因
原因: JDK8未指定-XX:MetaspaceSize大小, 默认情况下很小,因此已启动就触发了CMS进行扩容,一次CMS至少会发生两次FGC, 因此加上在JVM参数上-XX:MetaspaceSi ...
最新文章
- 十四、进程互斥的硬件实现方法
- 作业收缴系统设计手册(自写开源小系统)
- 证书服务器无法启动,使用 SSL 证书后服务无法启动 - SQL Server | Microsoft Docs
- superset可视化-deck.gl 3D Hexagon与deck.gl Grid与deck.gl Screen Grid
- 剑指offer之二叉搜索树和双向链表
- 如何在我们项目中利用开源的图表(js chart)
- 1_数据分析—数据载入、导出和探索
- SQL Server存储过程的使用
- 【转】编辑器与IDE
- rocketmq 双主双从同步写安装部署
- 如何查看chrome的版本
- 汉化破解:ASPack 2.12 -gt; Alexey Solodovnikov -- Dump
- 实现iOS系统相机九宫格滤镜的思路
- css3的vw单位,vh单位的讲解,以及vw vh的兼容性
- python len ljust_python中ljust的用法
- 嵌入式LINUX搭建arm环境,手把手教你嵌入式ARM开发环境搭建
- 微信小程序账号长时间未登录冻结解封
- 12个必不可少的Firefox插件
- kerberos+druid+phoenix
- 2023计算机毕业设计SSM最新选题之java“逢遇”个人博客平台qaoxv