On Sun, 6 Jul 2025 20:59:49 GMT, Albert Mingkun Yang <ay...@openjdk.org> wrote:
>> Returning `null` outside of a safe point does have unexpected negative >> effects. e.g. `HeapDumpOnOutOfMemoryError` may not get good heap dump, as >> other threads can come in and run additional GCs, then the heap dump may >> contain confusingly little live data. >> >> I wonder if you can improve this situtation. > > Let me try to rephrase your concern to ensure that I understand you correctly > -- after `_gc_overhead_counter >= GCOverheadLimitThreshold`, it's possible > that another GC is triggered, which reclaims much free memory, and resets > `_gc_overhead_counter` to zero. Then, `HeapDumpOnOutOfMemoryError` will not > be able to get the intended heap snapshot. > > Is my understanding correct? > > (Seems that baseline resets the condition and can encounter the same problem > as well.) > > > if (limit_exceeded && softrefs_clear) { > *gc_overhead_limit_was_exceeded = true; > size_policy()->set_gc_overhead_limit_exceeded(false); Yes. I don't think it is exceeding overhead limit only problem, but OOM and heap dump have to be, in a sense of `atomic`. We encountered this problem in real production system. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/25000#discussion_r2188761699