Each player gets a large table upon joining my game. I’m using the method/function to clean that large table up after they leave. It’s complicated to explain any more…
Setting self = nil doesn’t do anything because self is just like a parameter to a function, it’s just another reference. When you call a function with : the function presumes self is the first argument passed and handles all of that for you. What you should do in a custom Destroy is disconnect all events. To allow tables to be garbage collected, they must not exist in any scope of any function anymore. So you should set all references of the table to nil, but setting self to nil doesn’t do anything except remove that one reference.
More info on garbage collection:
(Though I don’t recommend doing what it says entirely, just some info on weak/strong references)