0
我有一個小程序,檢查網站的更新,它通過加載網站的HTML到一個字符串對象,然後搜索該字符串的模式,但是因爲該網站需要大量的空間我已經注意到每次掃描時,應用程序的內存使用量都在增長。我認爲這是因爲不是重寫舊字符串的內容而是創建一個新字符串,並且我不知道舊字符串的內容,但不刪除它。如何覆蓋Java中的字符串?
這是我寫的
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
}
}
}
}
的代碼,我注意到這一點,因爲在第一次運行該應用程序需要8.5MB,但是它目前是27.8和每檢查增長。
技術上的堆空間,而不GC生長,直到它在伊甸園代 – AdamSkywalker
足夠的自由空間,你爲什麼在'而(真)'循環創建一個新的'Scanner'? – TheLostMind
你不關閉你的流o_o你去那裏。當你完成他們的時候關閉你的溪流! – Tschallacka