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");