fix for some possible causes of memory leaks

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@7741 6c8d7289-2bf4-0310-a012-ef5d649a1542
pull/1/head
orbiter 14 years ago
parent 09ba6814c0
commit e28bd0d038

@ -52,6 +52,7 @@ import net.yacy.kelondro.order.Bitfield;
import net.yacy.kelondro.rwi.ReferenceContainer;
import net.yacy.kelondro.util.EventTracker;
import net.yacy.kelondro.util.ISO639;
import net.yacy.kelondro.util.MemoryControl;
import de.anomic.crawler.CrawlProfile;
import de.anomic.search.AccessTracker;
@ -422,6 +423,7 @@ public final class search {
while (trackerHandles.size() > 36) if (!trackerHandles.remove(trackerHandles.first())) break;
}
sb.remoteSearchTracker.put(client, trackerHandles);
if (MemoryControl.shortStatus()) sb.remoteSearchTracker.clear();
// log
yacyCore.log.logInfo("EXIT HASH SEARCH: " +

@ -691,9 +691,10 @@ public class yacysearch {
}
}
sb.localSearchTracker.put(client, trackerHandles);
if (sb.localSearchTracker.size() > 1000) {
if (sb.localSearchTracker.size() > 100) {
sb.localSearchTracker.remove(sb.localSearchTracker.keys().nextElement());
}
if (MemoryControl.shortStatus()) sb.localSearchTracker.clear();
} catch (Exception e) {
Log.logException(e);
}

@ -58,6 +58,7 @@ import net.yacy.kelondro.index.RowSpaceExceededException;
import net.yacy.kelondro.logging.Log;
import net.yacy.kelondro.order.CloneableIterator;
import net.yacy.kelondro.table.SplitTable;
import net.yacy.kelondro.util.MemoryControl;
import net.yacy.repository.Blacklist;
public final class MetadataRepository implements Iterable<byte[]> {
@ -176,6 +177,7 @@ public final class MetadataRepository implements Iterable<byte[]> {
throw new IOException("RowSpaceExceededException in " + this.urlIndexFile.filename() + ": " + e.getMessage());
}
statsDump = null;
if (MemoryControl.shortStatus()) clearCache() ;
}
public boolean remove(final byte[] urlHashBytes) {

@ -56,6 +56,7 @@ public class SearchEventCache {
}
public static void put(String eventID, SearchEvent event) {
if (MemoryControl.shortStatus()) cleanupEvents(true);
lastEventID = eventID;
SearchEvent oldEvent = lastEvents.put(eventID, event);
if (oldEvent == null) cacheInsert++;

@ -246,7 +246,7 @@ public final class TransformerWriter extends Writer {
} catch (IOException e) {
Log.logException(e);
}
if (filterCont == null) filterCont = new CharBuffer(); else filterCont.reset();
if (filterCont == null) filterCont = new CharBuffer(Math.max(100, content.length)); else filterCont.reset();
return new char[0];
} else {
// we ignore that thing and return it again

@ -45,6 +45,7 @@ import net.yacy.kelondro.logging.Log;
import net.yacy.kelondro.order.ByteOrder;
import net.yacy.kelondro.order.CloneableIterator;
import net.yacy.kelondro.util.ByteArray;
import net.yacy.kelondro.util.MemoryControl;
public class Compressor implements BLOB {
@ -333,6 +334,8 @@ public class Compressor implements BLOB {
this.buffer.put(UTF8.String(key), b);
this.bufferlength += b.length;
}
if (MemoryControl.shortStatus()) flushAll();
}
public synchronized void delete(byte[] key) throws IOException {

Loading…
Cancel
Save