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

j16sdiz at freenetproject.org j16sdiz at freenetproject.org
Fri May 2 15:49:48 UTC 2008


Author: j16sdiz
Date: 2008-05-02 15:49:47 +0000 (Fri, 02 May 2008)
New Revision: 19684

Modified:
   trunk/freenet/src/freenet/node/MemoryChecker.java
Log:
oomhook: fire low memory only when we have allocated maxMemory


Modified: trunk/freenet/src/freenet/node/MemoryChecker.java
===================================================================
--- trunk/freenet/src/freenet/node/MemoryChecker.java	2008-05-02 14:59:50 UTC (rev 19683)
+++ trunk/freenet/src/freenet/node/MemoryChecker.java	2008-05-02 15:49:47 UTC (rev 19684)
@@ -41,9 +41,14 @@
 		
 		Runtime r = Runtime.getRuntime();
 		
-		Logger.normal(this, "Memory in use: "+SizeUtil.formatSize((r.totalMemory()-r.freeMemory())));
+		long totalMemory = r.totalMemory();
+		long freeMemory = r.freeMemory();
+		long maxMemory = r.maxMemory();
 		
-		if (r.freeMemory() < 8 * 1024 * 1024) { // free memory < 8 MB
+		Logger.normal(this, "Memory in use: "+SizeUtil.formatSize((totalMemory-freeMemory)));
+		
+		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();
 		}
@@ -64,13 +69,13 @@
 		// we are getting much easier. 
 		if(aggressiveGCModificator > 0) {
 			boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
-			long beforeGCUsedMemory = (r.totalMemory()-r.freeMemory());
+			long beforeGCUsedMemory = (r.totalMemory() - r.freeMemory());
 			if(logMINOR) Logger.minor(this, "Memory in use before GC: "+beforeGCUsedMemory);
 			long beforeGCTime = System.currentTimeMillis();
 			System.gc();
 			System.runFinalization();
 			long afterGCTime = System.currentTimeMillis();
-			long afterGCUsedMemory = (r.totalMemory()-r.freeMemory());
+			long afterGCUsedMemory = (r.totalMemory() - r.freeMemory());
 			if(logMINOR) {
 				Logger.minor(this, "Memory in use after GC: "+afterGCUsedMemory);
 				Logger.minor(this, "GC completed after "+(afterGCTime - beforeGCTime)+"ms and \"recovered\" "+(beforeGCUsedMemory - afterGCUsedMemory)+" bytes, leaving "+afterGCUsedMemory+" bytes used");




More information about the cvs mailing list