JVM hang时,Eden区100%,所有线程包括gc线程被 blocked分析

当JVM的Eden区达到100%,触发Young GC时,VM线程执行GC任务,但GC线程在执行过程中可能因内存分配需要获取Heap lock,导致与持有锁的应用线程出现死锁。此现象源于线程避免重复触发GC和处理异常时的内存需求,目前无预留解决方案。
摘要由CSDN通过智能技术生成
jstat -gcutil pid 1000
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
  5.68  36.18 100.00   1.50  11.93     14    0.555     0    0.000    0.555
  5.68  36.18 100.00   1.50  11.93     14    0.555     0    0.000    0.555
  5.68  36.18 100.00   1.50  11.93     14    0.555     0    0.000    0.555
  5.68  36.18 100.00   1.50  11.93     14    0.555     0    0.000    0.555

jstack -F pid 
Attaching to process ID 16063, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.0-b56
Deadlock Detection:

No deadlocks found.

Thread xxx: (state = BLOCKED)

Thread xxx: (state = BLOCKED)

..........

Thread xxx: (state = BLOCKED)


Eden区100%时,应用申请内存不能分配,触发ygc,vmThread执行ygc,分配给GCTaskThread执行,vmThread需要等GCTaskThread

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值