lishid / OpenInv

Open anyone's inventory as a chest, real-time!
GNU General Public License v3.0
120 stars 97 forks source link

Player loading & Advancements memory leak #73

Closed Jikoo closed 2 years ago

Jikoo commented 7 years ago

Not sure if this was an issue with achievements, but advancements load each time a player is loaded, then never get garbage collected. Need to look into the logout process more to complete cleanup. Shouldn't present an issue to the average user, takes 1000+ player loads to make a real impact.

RoboMWM commented 7 years ago

Hmm I remember someone complaining about advancements with a heap dump in #spigot-dev but eventually he believes he resolved it by discovering someone spamming a packet and rate limiting said packet, as a resolution to his issue. (He also was doing NMS stuff.)

Jikoo commented 7 years ago

I found this to be an issue when loading players periodically for various checks, ended up having advancements consuming about 30% of the memory used. After reducing periodic checks, memory usage normalized. It's certainly not a concern for the average user, but it should definitely be fixed in case other plugins end up using Player objects provided by OpenInv. The server I'm currently working with has a rather small and consistent player base. I don't think anyone's been doing anything malicious, though I guess I can't entirely rule it out.

RoboMWM commented 7 years ago

Yea, he was also spawning entityplayers or something.

Jikoo commented 4 years ago

Not sure how this was handled back in 1.12 because I never invested the time to track it down, but in 1.15 there does not appear to be any special handling for advancements.

Jikoo commented 2 years ago

I had assumed this was resolved because I stopped encountering it in later versions, but according to this post it looks like this is as simple as releasing the player's advancement data.