`

为什么不能将Tomcat的Full gc禁用掉?

    博客分类:
  • java
 
阅读更多

大多数人都知道通过设置-XX:-+DisableExplicitGC可以禁用掉显示调用的System.gc().

而有心人可以发现Tomcat会每隔一个小时触发一次Full GC,为什么每次那么准时?是因为应用中对象正好一个小时满了么?当然不是.那么可以禁用掉好提高性能么?这个是可以的么?答案是No!千万别!

Why?

想了好多,觉得还是简单来讲吧,所有的堆外内存都只有在Full GC情况下才会释放,而Tomcat线上应用都应该是开启NIO的(大概是应该吧?毕竟NIO性能比较高是吧),而NIO也会产生堆外内存,另外线程的栈信息(使用多线程的情况下)也需要在Full GC来清除,所以因为full gc 导致应用暂停时间较长,而取消掉full gc 是不合理的 

分享到:
评论

相关推荐

    Tomcat7优化.docx

    调整JVM内存参数可以避免Full GC的发生,例如当年老代或持久代空间不足时。了解并监控GC行为对优化至关重要。 2. **JVM参数设置** 在`bin/catalina.sh`或`catalina.bat`中设置`JAVA_OPTS`,例如: ``` JAVA_...

    TOMCAT优化

    因此,将Tomcat与Apache等Web服务器结合使用,让Tomcat专门处理JSP等动态内容,而其他静态资源则由Web服务器处理,可以显著提高整体性能。 #### 四、自身调优 ##### 4.1 禁用DNS查询 在Web应用程序需要处理大量...

    Tomcat基础镜像优化手册.docx

    - **年轻代大小** (`-Xmn`): 调整年轻代大小以适应应用负载特点,合理设置可有效降低 Full GC 的频率。 - **垃圾回收策略调优**: - **使用并发标记清扫器** (`-XX:+UseConcMarkSweepGC`): 在多核处理器环境中,该...

    Tomcat7优化

    2. 垃圾收集器选择:对于高并发场景,可以选择Concurrent Mark Sweep (CMS) 或 G1 Garbage Collector,以降低Full GC的频率,提高响应速度。 3. 编译器设置:启用Server模式的HotSpot编译器,通过`-XX:+UseServerGC...

    tomcat连接优化

    - **-XX:+UseConcMarkSweepGC**:启用并发标记-清除垃圾回收器,有助于减少Full GC的次数,提高系统性能。 ##### 2. 非堆内存管理 非堆内存主要用于存储类元数据、静态变量等信息。对于Tomcat来说,优化非堆内存...

    Java高级面试题及答案总结(2021年Java面试题答案大汇总)

    4. 如何配置Tomcat来使用IIS和NTLM:遵循isapi_redirector.dll的标准指令配置IIS使用“集成windows验证”确保在服务器.xml中您已经禁用了tomcat身份验证。 5. Java中的继承:Java中既有单继承,又有多继承,对于...

    2020年多家公司整理的350道Java面试题手册.pdf

    - **内存分配**:合理设置新生代和老年代的大小,避免频繁的Minor GC或Full GC。 - **JVM监控工具**:如JVisualVM和JConsole,用于实时监控和分析JVM性能。 3. **MySQL优化** - **索引优化**:创建合适的数据...

Global site tag (gtag.js) - Google Analytics