1 /* 2 * Copyright (c) 2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 #ifndef OHOS_BATTERY_MANAGER_MEMORY_GUARD_H 16 #define OHOS_BATTERY_MANAGER_MEMORY_GUARD_H 17 #include "nocopyable.h" 18 #include "battery_log.h" 19 #include "malloc.h" 20 namespace OHOS { 21 namespace PowerMgr { 22 class MemoryGuard { 23 public: 24 DISALLOW_COPY_AND_MOVE(MemoryGuard); MemoryGuard()25 MemoryGuard() 26 { 27 int setCache = mallopt(M_SET_THREAD_CACHE, M_THREAD_CACHE_DISABLE); 28 int setFree = mallopt(M_DELAYED_FREE, M_DELAYED_FREE_DISABLE); 29 if (setCache != 1 || setFree != 1) { 30 BATTERY_HILOGD( 31 COMP_SVC, "disable tcache and delay free, result[%{public}d, %{public}d]", setCache, setFree); 32 } 33 } ~MemoryGuard()34 ~MemoryGuard() 35 { 36 int err = mallopt(M_FLUSH_THREAD_CACHE, 0); 37 if (err != 1) { 38 BATTERY_HILOGD(COMP_SVC, "flush cache, result: %{public}d", err); 39 } 40 } 41 }; 42 } // namespace PowerMgr 43 } // namespace OHOS 44 #endif