From 695d59d1d5e6c8f5145ded1b9e6a33a0a42d3de0 Mon Sep 17 00:00:00 2001 From: liqiang-fit2cloud Date: Fri, 5 Dec 2025 18:12:47 +0800 Subject: [PATCH] refactor: trim memory. --- apps/maxkb/settings/mem.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/apps/maxkb/settings/mem.py b/apps/maxkb/settings/mem.py index d4e2ccc8e..c9dc91181 100644 --- a/apps/maxkb/settings/mem.py +++ b/apps/maxkb/settings/mem.py @@ -5,14 +5,22 @@ import threading from maxkb.const import CONFIG from common.utils.logger import maxkb_logger import random +import psutil CURRENT_PID=os.getpid() # 1 hour GC_INTERVAL = 3600 def enable_force_gc(): + before = int(psutil.Process(CURRENT_PID).memory_info().rss / 1024 / 1024) collected = gc.collect() - maxkb_logger.debug(f"(PID: {CURRENT_PID}) Forced GC ({collected} objects collected)") + try: + import ctypes + ctypes.CDLL("libc.so.6").malloc_trim(0) + except Exception: + pass + after = int(psutil.Process(CURRENT_PID).memory_info().rss / 1024 / 1024) + maxkb_logger.debug(f"(PID: {CURRENT_PID}) Forced GC ({collected} objects and {before - after} MB recycled)") t = threading.Timer(GC_INTERVAL - random.randint(0, 900), enable_force_gc) t.daemon = True t.start()