Manually trigger GC in cases of large deallocations.
This commit is contained in:
parent
ade8d03f54
commit
d8e47b08a2
@ -33,6 +33,7 @@ import logging
|
|||||||
import math
|
import math
|
||||||
import weakref
|
import weakref
|
||||||
import inspect
|
import inspect
|
||||||
|
import gc
|
||||||
|
|
||||||
from .guild import Guild
|
from .guild import Guild
|
||||||
from .activity import _ActivityTag
|
from .activity import _ActivityTag
|
||||||
@ -117,6 +118,11 @@ class ConnectionState:
|
|||||||
self._private_channels_by_user = {}
|
self._private_channels_by_user = {}
|
||||||
self._messages = self.max_messages and deque(maxlen=self.max_messages)
|
self._messages = self.max_messages and deque(maxlen=self.max_messages)
|
||||||
|
|
||||||
|
# In cases of large deallocations the GC should be called explicitly
|
||||||
|
# To free the memory more immediately, especially true when it comes
|
||||||
|
# to reconnect loops which cause mass allocations and deallocations.
|
||||||
|
gc.collect()
|
||||||
|
|
||||||
def process_listeners(self, listener_type, argument, result):
|
def process_listeners(self, listener_type, argument, result):
|
||||||
removed = []
|
removed = []
|
||||||
for i, listener in enumerate(self._listeners):
|
for i, listener in enumerate(self._listeners):
|
||||||
@ -210,6 +216,10 @@ class ConnectionState:
|
|||||||
|
|
||||||
del guild
|
del guild
|
||||||
|
|
||||||
|
# Much like clear(), if we have a massive deallocation
|
||||||
|
# then it's better to explicitly call the GC
|
||||||
|
gc.collect()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def emojis(self):
|
def emojis(self):
|
||||||
return list(self._emojis.values())
|
return list(self._emojis.values())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user