Firing off async threads without a means to kill off. A single jython async thread stuck in an infinite wait or infinite loop will hold the entire old interpreter in memory after a scripting restart.
Opening python sockets without try-finally guards to close.
Attaching python listeners to java infrastructure with no way to remove/retire.
Caching python objects without control over lifetimes.
All of the above are prone to happen regularly as projects are edited and scripts are restarted (per project in the gateway).