FULL GC有可能导致JVM暂停1分钟以上吗?

标签: full gc jvm | 发表时间:2011-12-30 11:38 | 作者:
出处:http://hllvm.group.iteye.com

作者: qianhd  链接: http://hllvm.group.iteye.com/group/topic/28745  发表时间: 2011年12月30日

声明:本文系ITeye网站发布的原创文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!

与另外个程序交互有个心跳检测, 15s/次, 31s没有收到心跳检测的返回消息就认为连接断了,

现在遇到一个诡异问题, 不知什么原因 导致程序中1分多钟内日志无任何输出, 接着就是检测到超时, 可是接着连续输出多次发送keepalive.

发送keepalive就是很简单的java.util.Timer, 速率固定

启动参数
-Xms16m -Xmx128m -XX:+HeapDumpOnOutOfMemoryError

程序启动时间[15:55:10.225] [23.12.2011]


第一次
[09:51:16.288] [26.12.2011] [Thread-14][DEBUG] Keepalive receiver started or reseted.

[09:53:26.819] [26.12.2011] [Timer-9197][ERROR] Keepalive timeout reached

[09:53:26.819] [26.12.2011] [Timer-9][DEBUG] Keepalive sent

[09:53:26.819] [26.12.2011] [Timer-9][DEBUG] Keepalive sent

[09:53:26.819] [26.12.2011] [Timer-9][DEBUG] Keepalive sent

[09:53:26.819] [26.12.2011] [Timer-9][DEBUG] Keepalive sent

[09:53:26.819] [26.12.2011] [Timer-9][DEBUG] Keepalive sent

[09:53:26.819] [26.12.2011] [Timer-9][DEBUG] Keepalive sent

[09:53:26.819] [26.12.2011] [Timer-9][DEBUG] Keepalive sent

[09:53:26.819] [26.12.2011] [Timer-9][DEBUG] Keepalive sent      

[09:53:26.819] [26.12.2011] [Timer-9197][DEBUG] Sent <Disconnect/>



重连启动后第二次
[09:57:17.053] [26.12.2011] [Thread-9207][DEBUG] Keepalive receiver started or reseted.

[09:58:29.381] [26.12.2011] [Timer-9259][ERROR] Keepalive timeout reached

[09:58:29.381] [26.12.2011] [Timer-9259][DEBUG] Sent <Disconnect/>

[09:58:29.397] [26.12.2011] [Timer-9200][DEBUG] Keepalive sent

[09:58:29.397] [26.12.2011] [Timer-9200][DEBUG] Keepalive sent

[09:58:29.397] [26.12.2011] [Timer-9200][DEBUG] Keepalive sent

[09:58:29.397] [26.12.2011] [Timer-9200][DEBUG] Keepalive sent

已有 4 人发表回复,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [full gc jvm] 推荐:

FULL GC有可能导致JVM暂停1分钟以上吗?

- - 高级语言虚拟机
作者: qianhd . 链接: http://hllvm.group.iteye.com/group/topic/28745 . 发表时间: 2011年12月30日. 声明:本文系ITeye网站发布的原创文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任. 与另外个程序交互有个心跳检测, 15s/次, 31s没有收到心跳检测的返回消息就认为连接断了,.

JVM初探——使用堆外内存减少Full GC

- - ImportNew
GCIH可以联想到:  将长期存活的对象(如Local Cache)移入堆外内存(off-heap, 又名. 直接内存/direct-memory), 从而减少CMS管理的对象数量, 以降低Full GC的次数和频率, 达到提高系统响应速度的目的.. 这个idea最初来源于TaobaoJVM对OpenJDK定制开发的GCIH部分(详见 撒迦的分享- JVM定制改进@淘宝), 其中GCIH就是将CMS Old Heap区的一部分划分出来, 这部分内存虽然还在堆内, 但已不被GC所管理.

触发Full GC执行的情况

- - Web前端 - ITeye博客
除直接调用System.gc外,触发Full GC执行的情况有如下四种. 旧生代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象,当执行Full GC后空间仍然不足,则抛出如下错误:. 为避免以上两种状况引起的Full GC,调优时应尽量做到让对象在Minor GC阶段被回收、让对象在新生代多存活一段时间及不要创建过大的对象及数组.

Full GC是否真的存在

- - Java译站
在Plumbr这和GC暂停检测打交道的这段日子里,我查阅了与这个主题相关的大量文章,书籍以及资料. 在这当中,我经常会对新生代GC, 年老代GC以及Full GC的事件的使用(滥用)感到困惑. 于是便有了这篇文章,希望能够清除一些困惑. 本文需要读者对JVM内建的GC相关的常用原理有一定的了解. 像eden区,Survivor区以及年老区空间的划分,分代假设(generational hypothesis)以及不同的GC算法就不在本文的讨论范围之内了.

利用Arena Allocation避免HBase触发Full GC

- Adam - 淘宝JAVA中间件团队博客
Arena Allocation,是一种GC优化技术,它可以有效地减少因内存碎片导致的Full GC,从而提高系统的整体性能. 本文介绍Arena Allocation的原理及其在Hbase中的应用-MSLAB. 假设有1G内存,我顺序创建了1百万个对象,每个对象大小1K,Heap会被渐渐充满且每个对象以创建顺序相邻.

Tomcat的JreMemoryLeakPreventionListener监听周期性频繁执行full gc

- -
网上还是有蛮多解决方案,还是说说我最比较喜欢且常用的吧,. 1、添加gcDaemonProtection="false"参数禁用JreMemoryLeakPreventionListener监听. 2、直接删除JreMemoryLeakPreventionListener监听. 已有 0 人发表留言,猛击->> 这里<<-参与讨论.

系统频繁Full gc问题分析及解决办法

- - JavaRanger - 专注JAVA高性能程序开发、JVM、Mysql优化、算法
上周开始系统在业务高峰期一直收到Full gc报警,监控显示fgc频繁,下图是监控图,左边红框是优化前效果,右边是优化后,优化后fgc基本为0. 1.查看gc日志,发现old区fgc后大小没有变化,如下图:. 2.去线上dump内存看是什么对象,用memory analyzer分析,Retained Size竟然有2.4G,全是sun.awt.SunToolkit这个对象,其实到这一步已经可以确定是什么问题了,只是自己对系统不是很熟悉,导致定位具体的问题代码花了一些时间.

(转)关于施用full gc频繁的分析及解决

- - Java - 编程语言 - ITeye博客
当频繁full gc时,jstack打印出堆栈信息如下:. 可以看到的确是在跑低价信息. 另外在应用频繁full gc时和应用正常时,也执行了如下2种命令:. sudo -u admin -H /opt/taobao/java/bin/jmap -histo:live `pgrep` > #your file path#(live会产生full gc).

JVM垃圾回收(GC)原理

- kill - yiihsia[互联网后端技术]_yiihsia[互联网后端技术]
引用计数(Reference Counting). 原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数. 垃圾回收时,只用收集计数为0的对象. 此算法最致命的是无法处理循环引用的问题. 标记-清除(Mark-Sweep). 第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除.

JVM的GC简介和实例

- - 搜索技术博客-淘宝
本文是一次内部分享中总结了jvm gc的分类和一些实例, 内容是introduction级别的,供初学人士参考. 成文仓促,难免有些错误,如果有大牛发现,请留言,我一定及时更正,谢谢. JVM内存布局主要包含下面几个部分:. Java Virtual Machine Stack: 也就是我们常见的局部变量栈,线程私有,保存线程执行的局部变量表、操作栈、动态连接等.