[freenet-cvs] r19712 - trunk/freenet/src/freenet/node

toad at freenetproject.org toad at freenetproject.org
Sat May 3 18:57:30 UTC 2008


Author: toad
Date: 2008-05-03 18:57:30 +0000 (Sat, 03 May 2008)
New Revision: 19712

Modified:
   trunk/freenet/src/freenet/node/MemoryChecker.java
Log:
Make sdiz's changes begin to make sense.
Less than 8MB from the maximum limit isn't that big a deal: it happens fairly frequently on any garbage collected system, especially with the -server VM.
So when we reach the threshold, do a GC, and then check again, and if we are still over the limit, trigger the OOM prevention code.

Modified: trunk/freenet/src/freenet/node/MemoryChecker.java
===================================================================
--- trunk/freenet/src/freenet/node/MemoryChecker.java	2008-05-03 18:00:56 UTC (rev 19711)
+++ trunk/freenet/src/freenet/node/MemoryChecker.java	2008-05-03 18:57:30 UTC (rev 19712)
@@ -49,8 +49,17 @@
 		
 		if (freeMemory < 8 * 1024 * 1024 // free memory < 8 MB
 		        && (totalMemory == maxMemory || maxMemory == Long.MAX_VALUE)) { // we have allocated max memory
-			Logger.error(this, "memory too low, trying to free some");
-			OOMHandler.lowMemory();
+			Logger.normal(this, "Reached threshold, checking for low memory ...");
+			System.gc();
+			System.runFinalization();
+			totalMemory = r.totalMemory();
+			freeMemory = r.freeMemory();
+			maxMemory = r.maxMemory();
+			if (freeMemory < 8 * 1024 * 1024 // free memory < 8 MB
+			        && (totalMemory == maxMemory || maxMemory == Long.MAX_VALUE)) { // we have allocated max memory
+				Logger.error(this, "memory too low, trying to free some");
+				OOMHandler.lowMemory();
+			}
 		}
 		
 		int sleeptime = aggressiveGCModificator;




More information about the cvs mailing list