From 0bf260dc72b06bb322e939434e02d117dcfc48ff Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 15 四月 2024 17:49:43 +0800 Subject: [PATCH] 10138 内存分析(地图24小时内没有玩家在线则回收py表数据) --- ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py | 29 +++++++++++++++++++++++++++++ 1 files changed, 29 insertions(+), 0 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py index ae6dac9..d8368bb 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py @@ -21,6 +21,7 @@ import hashlib import os +import gc '''表结构定义字典 { @@ -2358,6 +2359,34 @@ self.IpyDataClear(True) return + def Recycle(self): + Log("IPY_DataMgr Recycle") + for tableName in Def_IpyTable.keys(): + if not hasattr(self, "ipy%sLen" % tableName): + continue + cacheList = getattr(self, "ipy%sCache" % tableName) + del cacheList + delattr(self, "ipy%sLen" % tableName) + delattr(self, "ipy%sCache" % tableName) + Log("Recycle IPY_%s" % tableName) + + del self.fileMD5Dict, self.ipyConfigEx, self.ipyDataIndexMap, self.ipyDataIndexMapEx, self.ipyFuncConfigDict, self.classSizeDict + self.fileMD5Dict = {} + self.ipyConfigEx = {} + self.ipyDataIndexMap = {} + self.ipyDataIndexMapEx = {} + self.ipyFuncConfigDict = {} + self.classSizeDict = {} + gc.collect() + return + + def LoadAll(self): + ## 加载全部数据,测试内存用,实际应用中不调用 + for tableName in Def_IpyTable.keys(): + setattr(self, "ipy%sLen" % tableName, 0) + self.IpyDataClear() + return + def IpyDataClear(self, onlyCheck=False): Log("IPY_DataMgr Reload... onlyCheck=%s" % onlyCheck) if not onlyCheck: -- Gitblit v1.8.0