[ 
https://issues.apache.org/jira/browse/FLINK-21753?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Xintong Song closed FLINK-21753.
--------------------------------
    Fix Version/s: 1.12.3
                   1.11.4
       Resolution: Fixed

Fixed via:
* release-1.11: a0eeac3bdb7f83f9b73cdcdd8b507f6d0069115c
* release-1.12: 86a185665e2451b37335326535795576429f8cde

> 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
>             Fix For: 1.11.4, 1.12.3
>
>
> {{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)

Reply via email to