2016-04-15 19 views
0

Ich habe ein Applet, das eine Website nach Updates prüft, indem es den HTML-Code der Website in ein String-Objekt lädt und dann nach einem Muster sucht, aber weil die Website viel Platz in Anspruch nimmt, merke ich das schon Mit jedem Scan wächst die Speicherauslastung der App. Ich nehme an, dass das ist, weil, anstatt den Inhalt der alten Schnur neu zu schreiben, es ein neues schafft und tut, weiß ich nicht was mit dem alten, aber nicht lösche es.Wie überschreiben Sie einen String in Java?

Hier ist der Code, den ich

schrieb
import java.io.IOException; 
import java.net.URI; 
import java.net.URISyntaxException; 
import java.net.URL; 
import java.util.Scanner; 

/** 
* Created by zaers on 15-Apr-16. 
*/ 
public class PageSearch { 
    public static void main(String[] args){ 
     while(true) { 
      try { 
       Thread.sleep(60000); 
      } catch (InterruptedException e) { 
       System.exit(1); //OS screwed our program 
      } 
      try { 
       String out = new Scanner(new  URL("http://blog.dota2.com/").openStream(), "UTF-8").useDelimiter("\\A").next(); 
       if(out.contains("6.87")){ 
        java.awt.Desktop.getDesktop().browse(new  URI("http://www.youtube.com/watch?v=-kcOpyM9cBg&t=7m21s")); 
        break; 
       } 
       else continue; 
      } catch (IOException e) { 
       System.exit(2); //Blog is kill 
      } catch (URISyntaxException e) { 
       System.exit(3); //YouTube is kill 
      } 
     } 
    } 
} 

ich das, weil bei der ersten Ausführung bemerkt die App 8.5MB nimmt, aber es ist derzeit bei 27,8 und wächst mit jeder Prüfung.

+1

technisch Heap Raum ohne GC wachsen kann, bis es in Eden Generation genügend freier Speicherplatz vorhanden ist – AdamSkywalker

+3

Warum sind Sie in der 'while (true)' Schleife ein neues 'Scanner' erstellen? – TheLostMind

+2

Schließen Sie nicht Ihre Streams o_O Nun, Sie gehen. Schließen Sie Ihre Streams, wenn Sie damit fertig sind! – Tschallacka

Antwort

0

Setzen Sie die XmX auf etwas, mit dem Sie sich wohl fühlen. Das Xmx = B-Flag weist Ihre JVM an, eine maximale Menge an B-Speicher zu verwenden. Sie wird den GC auslösen, wenn Sie diese Speichermenge erreichen. Sei vorsichtig damit, wenn du durch irgendeine Art von Wunder tatsächlich mehr als Xmx benötigst und die JVM keinen neuen Speicher zuweisen kann, wird sie mit einer Ausnahme wegen zu wenig Speicher abstürzen.

Verwenden Sie dies nur, wenn Sie bereits ordentlich nach sich aufräumen!

Weitere Informationen:

Xmx and Xms

Verwandte Themen