' 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 skinparam monochrome true title GC Thread start while (true) if (gc_stop_flag) then (yes) break; else (no) if (GCTaskQueue not empty) then (yes) :Get task; if (task is Full GC) then (yes) :Run Full GC; elseif (task is Major GC) then (yes) :Run GC with obtained task in separated thread; while (Major GC is not completed) is (yes) if (GCTaskQueue contains minor GC) then(yes) :Run minor GC in this thread; else (no) endif endwhile (no) else (no) :Run minor GC in this thread; endif endif endif end while stop @enduml