' Copyright (c) 2021-2022 Huawei Device Co., Ltd. ' Licensed under the Apache License, Version 2.0 (the "License"); ' you may not use this file except in compliance with the License. ' You may obtain a copy of the License at ' ' http://www.apache.org/licenses/LICENSE-2.0 ' ' Unless required by applicable law or agreed to in writing, software ' distributed under the License is distributed on an "AS IS" BASIS, ' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ' See the License for the specific language governing permissions and ' limitations under the License. @startuml start skinparam monochrome true title Process references if (The reason of GC is not OOM) then(Yes) :Mark soft references(see Marking phase); endif :ClearFinalizeReferences(see FinalizerDaemon); while (while SoftReferenceQueue, WeakReferenceQueue, PhantomReferenceQueue not processed) while (Queue is not empty) :Get object from the Queue; if (The referent object is marked or processed already) then(Yes) else (No) :referent = null; :Add the object to cleared_references; endif endwhile endwhile :enqueue cleared_references to be processed via ReferenceQueue(Java); stop @enduml