mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-06-25 12:54:03 +00:00
NetworkSession: improve GC performance without crashing everything
this is necessary because some handlers have circular references to the session, which causes GC lag collecting them. This change allows them to be collected immediately without nuking internal state.
This commit is contained in:
parent
5250a432d1
commit
685481b172
@ -36,6 +36,7 @@ use pocketmine\network\BadPacketException;
|
|||||||
use pocketmine\network\mcpe\handler\DeathSessionHandler;
|
use pocketmine\network\mcpe\handler\DeathSessionHandler;
|
||||||
use pocketmine\network\mcpe\handler\HandshakeSessionHandler;
|
use pocketmine\network\mcpe\handler\HandshakeSessionHandler;
|
||||||
use pocketmine\network\mcpe\handler\LoginSessionHandler;
|
use pocketmine\network\mcpe\handler\LoginSessionHandler;
|
||||||
|
use pocketmine\network\mcpe\handler\NullSessionHandler;
|
||||||
use pocketmine\network\mcpe\handler\PreSpawnSessionHandler;
|
use pocketmine\network\mcpe\handler\PreSpawnSessionHandler;
|
||||||
use pocketmine\network\mcpe\handler\ResourcePacksSessionHandler;
|
use pocketmine\network\mcpe\handler\ResourcePacksSessionHandler;
|
||||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||||
@ -419,6 +420,7 @@ class NetworkSession{
|
|||||||
$this->disconnectGuard = true;
|
$this->disconnectGuard = true;
|
||||||
$func();
|
$func();
|
||||||
$this->disconnectGuard = false;
|
$this->disconnectGuard = false;
|
||||||
|
$this->setHandler(new NullSessionHandler());
|
||||||
$this->connected = false;
|
$this->connected = false;
|
||||||
$this->manager->remove($this);
|
$this->manager->remove($this);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user