[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