diff --git a/apps/sam/java/src/net/i2p/sam/SAMBridge.java b/apps/sam/java/src/net/i2p/sam/SAMBridge.java
index c1dd7fe8a17cfe3acb372609d23d2a2342132445..3f692571e00929f99eff66ea993c1e863bb4ac05 100644
--- a/apps/sam/java/src/net/i2p/sam/SAMBridge.java
+++ b/apps/sam/java/src/net/i2p/sam/SAMBridge.java
@@ -220,6 +220,15 @@ public class SAMBridge implements Runnable {
         }
         SAMBridge bridge = new SAMBridge(host, port, opts, keyfile);
         I2PThread t = new I2PThread(bridge, "SAMListener");
+        if (Boolean.valueOf(System.getProperty("sam.shutdownOnOOM", "false")).booleanValue()) {
+            t.addOOMEventListener(new I2PThread.OOMEventListener() {
+                public void outOfMemory(OutOfMemoryError err) {
+                    err.printStackTrace();
+                    System.err.println("OOMed, die die die");
+                    System.exit(-1);
+                }
+            });
+        }
         t.start();
     }