From 7e4e3fe5b696aa3562cbbc292682ee6e793dd5c9 Mon Sep 17 00:00:00 2001 From: Michael Peter Christen Date: Thu, 2 Feb 2012 09:55:27 +0100 Subject: [PATCH] free some memory after parsing html --- .../document/parser/html/ContentScraper.java | 6 ++++++ .../yacy/document/parser/html/Scraper.java | 10 +++++---- .../parser/html/TransformerWriter.java | 3 +-- source/net/yacy/kelondro/io/CharBuffer.java | 21 ------------------- .../net/yacy/peers/operation/yacyRelease.java | 1 + 5 files changed, 14 insertions(+), 27 deletions(-) diff --git a/source/net/yacy/document/parser/html/ContentScraper.java b/source/net/yacy/document/parser/html/ContentScraper.java index a0a90e223..f0f754478 100644 --- a/source/net/yacy/document/parser/html/ContentScraper.java +++ b/source/net/yacy/document/parser/html/ContentScraper.java @@ -131,6 +131,7 @@ public class ContentScraper extends AbstractScraper implements Scraper { private float lon, lat; private MultiProtocolURI canonical; + /** * {@link MultiProtocolURI} to the favicon that belongs to the document */ @@ -175,6 +176,11 @@ public class ContentScraper extends AbstractScraper implements Scraper { this.canonical = null; } + @Override + public void finish() { + this.content.trimToSize(); + } + private void mergeAnchors(final MultiProtocolURI url, final Properties p) { final Properties p0 = this.anchors.get(url); if (p0 == null) { diff --git a/source/net/yacy/document/parser/html/Scraper.java b/source/net/yacy/document/parser/html/Scraper.java index ccc7de263..e1dfe73e1 100644 --- a/source/net/yacy/document/parser/html/Scraper.java +++ b/source/net/yacy/document/parser/html/Scraper.java @@ -1,4 +1,4 @@ -// Scraper.java +// Scraper.java // --------------------------- // (C) by Michael Peter Christen; mc@yacy.net // first published on http://www.anomic.de @@ -39,10 +39,12 @@ public interface Scraper { public void scrapeTag1(String tagname, Properties tagopts, char[] text); public void scrapeComment(final char[] comment); - + + public void finish(); + public void close(); - + public void registerHtmlFilterEventListener(ScraperListener listener); - + public void deregisterHtmlFilterEventListener(ScraperListener listener); } diff --git a/source/net/yacy/document/parser/html/TransformerWriter.java b/source/net/yacy/document/parser/html/TransformerWriter.java index eff602c55..94af677d8 100644 --- a/source/net/yacy/document/parser/html/TransformerWriter.java +++ b/source/net/yacy/document/parser/html/TransformerWriter.java @@ -534,8 +534,7 @@ public final class TransformerWriter extends Writer { this.filterOpts = null; if (this.filterCont != null) this.filterCont.close(); this.filterCont = null; -// if (scraper != null) {scraper.close(); scraper = null;} -// if (transformer != null) {transformer.close(); transformer = null;} + if (this.scraper != null) this.scraper.finish(); } private static boolean binaryHint(final char c) { diff --git a/source/net/yacy/kelondro/io/CharBuffer.java b/source/net/yacy/kelondro/io/CharBuffer.java index e00f290f6..4c2e698aa 100644 --- a/source/net/yacy/kelondro/io/CharBuffer.java +++ b/source/net/yacy/kelondro/io/CharBuffer.java @@ -73,27 +73,6 @@ public final class CharBuffer extends Writer { this.maximumLength = maximumLength; } - public CharBuffer(final int maximumLength, final char[] bb, final int of, final int le) { - if (of * 2 > bb.length) { - this.buffer = new char[le]; - System.arraycopy(bb, of, this.buffer, 0, le); - this.length = le; - this.offset = 0; - } else { - this.buffer = bb; - this.length = le; - this.offset = of; - } - this.maximumLength = maximumLength; - } - - public CharBuffer(final CharBuffer bb) { - this.buffer = bb.buffer; - this.length = bb.length; - this.offset = bb.offset; - this.maximumLength = bb.maximumLength; - } - public CharBuffer(final File f) throws IOException { // initially fill the buffer with the content of a file if (f.length() > Integer.MAX_VALUE) throw new IOException("file is too large for buffering"); diff --git a/source/net/yacy/peers/operation/yacyRelease.java b/source/net/yacy/peers/operation/yacyRelease.java index 8c0e29ef4..80d132259 100644 --- a/source/net/yacy/peers/operation/yacyRelease.java +++ b/source/net/yacy/peers/operation/yacyRelease.java @@ -365,6 +365,7 @@ public final class yacyRelease extends yacyVersion { try { final CharBuffer signBuffer = new CharBuffer(getSignatureFile()); final byte[] signByteBuffer = Base64Order.standardCoder.decode(signBuffer.toString().trim()); + signBuffer.close(); final CryptoLib cl = new CryptoLib(); for(final yacyUpdateLocation updateLocation : latestReleaseLocations) { try {