Похоже, что HtmlUnit не закрывает окна в веб-клиенте, что приводит к утечке памяти. Я пытаюсь получить страницу с HtmlUnit и передать ее JSoup для анализа. Я знаю, что JSoup может подключаться к странице, но мне нужно использовать этот подход, поскольку мне нужно поддерживать сеанс входа в систему на некоторых сайтах перед их анализом.
Вот код:
import java.io.IOException;
import java.net.MalformedURLException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
public class HtmlUnitLeakTest {
public static void main(String args[]) throws FailingHttpStatusCodeException, MalformedURLException, IOException{
WebClient webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setPrintContentOnFailingStatusCode(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setCssEnabled(false);
for(int i = 0; i < 500; i++){
HtmlPage page = webClient.getPage("http://www.stackoverflow.com");
Document doc = Jsoup.parse(page.asXml());
webClient.closeAllWindows();
System.out.println(i);
if((i % 5 == 0)){
System.out.println(i);
}
}
}
}
По мере этого объем памяти постоянно увеличивается, и на экране отладки я вижу, что все окна по-прежнему используются веб-клиентом и не закрыты.
Я видел этот код, который должен закрывать эти окна:
List windows = webclient.getWebWindows();
for (WebWindow ww : windows) {
ww.getJobManager().removeAllJobs();
ww.getJobManager().shutdown();
}
webclient.closeAllWindows();
Но, увы, этого не происходит, и утечка памяти по-прежнему возникает.
Кто-нибудь сталкивался с этой проблемой?< /p>
Привет!
Информация о версии:
HtmlUnit 2.15
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
Подробнее здесь: https://stackoverflow.com/questions/264 ... emory-leak
HtmlUnit закрывает все утечки памяти Windows ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение