Should I disconnect the Touched connection manually to save memory?
What I know is that if SomePart is destroyed then signal will be disconnected but what if the Script or LocalScript that created the connection is destroyed?
According to the Developer API linked above, the Destroy function
“Sets the Instance.Parent property to nil, locks the Instance.Parent property, disconnects all connections and calls Destroy on all children. This function is the correct way to dispose of objects that are no longer required. Disposing of unneeded objects is important, since unnecessary objects and connections in a place use up memory (this is called a memory leak ) which can lead to serious performance issues over time.”
Additionally, the thread will be stopped if the Script or one of its ancestors is destroyed. A script will continue to run even if the Parent property is set to nil (and the Script is not destroyed).
The :Destoy() function under the Script API:
Sets the Instance.Parent property to nil, locks the Instance.Parent property, disconnects all connections and calls Destroy on all children.