Since reconstruction one of my drone scripts I constantly have performance issues. The idea was to separate the code into several modules. Targeting module encapsulates all target data acquisition logic (raycasting, SPRT's GetNearestPlayer, etc), other modules consume target feed by subscribing to this modules' data updates. Basically, targeting module serializes a batch of commands into string argument and calls other PBs. Before that the game handled dozens of instances with no issues. What happens now: 1. No constant simspeed drop compared to single-pb solution. 2. After some time GC memory starts to pile up to higher and higher values. 3. Process memory goes up from 4GB to 9GB in seconds, then frees up, the cycle repeats. 4. As GC flagged memory frees up, I get freeze-the-world stutter, simspeed dip, process memory goes to baseline value. 5. After a while simpeed drops to really low values and the game is unplayable by then. If I comment out the other PB call and hardcode the command string with equivalent data (thus eliminating PB call part) all goes well. EDIT: I tried to pass data via the CustomData property instead of direct PB call and it didn't go much better. So at this point I'm not sure about OP title being accurate.