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