On Sun, 6 Jul 2025 20:59:49 GMT, Albert Mingkun Yang <[email protected]> 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