Currently we provide an API is_live_object(object: ObjectReference) -> bool, which is supposed to be used at any time and should return a correct result.
I quickly tested two cases in OpenJDK, and is_live() did not return correct results for all the plans.
Case 1: disable the allocation fastpath, assert if the object we just allocate is live after post_alloc(). Mark sweep failed on this.
Case 2: Based on Case 1, further use a stress factor 1, which will trigger a GC for every allocation. Both mark sweep and immix failed on this.
Currently we provide an API
is_live_object(object: ObjectReference) -> bool
, which is supposed to be used at any time and should return a correct result.I quickly tested two cases in OpenJDK, and
is_live()
did not return correct results for all the plans.Case 1: disable the allocation fastpath, assert if the object we just allocate is live after
post_alloc()
. Mark sweep failed on this. Case 2: Based on Case 1, further use a stress factor1
, which will trigger a GC for every allocation. Both mark sweep and immix failed on this.