[
https://issues.apache.org/jira/browse/FLINK-21753?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated FLINK-21753:
-----------------------------------
Labels: pull-request-available (was: )
> Cycle references between memory manager and gc cleaner action
> -------------------------------------------------------------
>
> Key: FLINK-21753
> URL: https://issues.apache.org/jira/browse/FLINK-21753
> Project: Flink
> Issue Type: Bug
> Components: Runtime / Task
> Affects Versions: 1.10.3, 1.11.3, 1.12.2
> Reporter: Kezhu Wang
> Assignee: Kezhu Wang
> Priority: Major
> Labels: pull-request-available
>
> {{MemoryManager.allocatePages}} uses {{this::releasePage}} as cleanup action
> in {{MemorySegmentFactory.allocateOffHeapUnsafeMemory}}. The cleanup function
> is used as gc cleaner action there. This creates a cycle referencing between
> memory manager and gc cleaner *if allocated memory segment is not
> {{MemoryManager.release}} in time.* Symptoms should be different based on
> versions:
> * Before 1.12.2: memory will not be reclaimed until gc after
> {{MemoryManager.release}}
> * * 1.12.2: memory will not be reclaimed until {{MemorySegment.free}} or gc
> after {{MemoryManager.release}}
> I quotes javadoc from jdk {{java.lang.ref.Cleaner}} here for references:
> {quote}The cleaning action is invoked only after the associated object
> becomes phantom reachable, so it is important that the object implementing
> the cleaning action does not hold references to the object. In this example,
> a static class encapsulates the cleaning state and action. An "inner" class,
> anonymous or not, must not be used because it implicitly contains a reference
> to the outer instance, preventing it from becoming phantom reachable. The
> choice of a new cleaner or sharing an existing cleaner is determined by the
> use case.
> {quote}
> See also FLINK-13985 FLINK-21419.
> I pushed [test
> case|https://github.com/kezhuw/flink/commit/9a5d71d3a6be50611cf2f5c65c39f51353167306]
> in my repository after FLINK-21419 (which merged in 1.12.2 but not before)
> for evaluation.
> cc [~azagrebin] [~xintongsong] [~trohrmann] [~ykt836] [~nicholasjiang]
--
This message was sent by Atlassian Jira
(v8.3.4#803005)