diff --git a/src/sbbs3/exec.cpp b/src/sbbs3/exec.cpp
index 5685c26f66d4b416b5c6bca6001f305273bb883e..3aa2494afaa94664e09f2f3674a7e794601695f8 100644
--- a/src/sbbs3/exec.cpp
+++ b/src/sbbs3/exec.cpp
@@ -550,6 +550,9 @@ js_BranchCallback(JSContext *cx, JSScript *script)
 	if(!(sbbs->js_loop%JAVASCRIPT_YIELD_FREQUENCY))
 		mswait(1);
 
+	if(!(sbbs->js_loop%JAVASCRIPT_GC_FREQUENCY))
+		JS_MaybeGC(cx);
+
     return(JS_TRUE);
 }
 
diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c
index 9094979d0f42f428640eeea87e87237e29ec8ce9..1a05100c5276452e2c5233d1aaa23ba582cf4de9 100644
--- a/src/sbbs3/services.c
+++ b/src/sbbs3/services.c
@@ -558,6 +558,9 @@ js_BranchCallback(JSContext *cx, JSScript *script)
 	if(!(client->js_loop%JAVASCRIPT_YIELD_FREQUENCY))
 		mswait(1);
 
+	if(!(client->js_loop%JAVASCRIPT_GC_FREQUENCY))
+		JS_MaybeGC(cx);
+
     return(JS_TRUE);
 }