HTMLUnit Java OutofMemory 堆 Space 异常

HTMLUnit Java OutofMemory Heap Space Exception

我一直在尝试解决 Java 堆 Space OutOfMemory 异常从我使用 HTMLUnit API 访问页面的程序抛出(这些页面有大量的 javascript,所以我选择使用HTMLUnit)。程序运行1小时左右,遇到内存异常。我尝试了其他帖子建议的不同方法,但 none 解决了这个问题。 当程序运行在Linux时:linux TOP命令显示该程序的内存使用量不断增加并达到90%,然后抛出OutOfMemory异常。 这些是我尝试解决此问题的方法:
1.increased堆space
2.run jdk1.8
3.run 打开 jre1.7
4.used html 单元的最新版本即 htmlunit2.7
5.used webclient.close() finally 块中的方法

List<WebWindow> windows = client.getWebWindows();

即使我关闭所有 windows:

,每次访问新页面时此列表计数都会增加
webclient.close()

我想知道 HTMLUnit 内存使用量增加的原因是什么,以及为什么即使调用 webclient.close() 方法程序也不会释放内存。 任何与此相关的建议将不胜感激。 谢谢。

编辑:

static WebClient client; //this is class variable
public void parsePage(){
HtmlPage pages;
pages = client.getPage(myURL);
Document doc = Jsoup.parse(pages.asXml()); //Using JSOUP library here
client.close();
///do work on the Document
}

您可能有内存泄漏,即您将一些对象(可能是 WebWindowHTMLPage 的实例)添加到某个集合中,并且它们一直保存在那里。 如果不是这种情况,那么这是库本身的问题,但首先要检查您自己的代码。 顺便说一句 WebClient 是可自动关闭的,你可以使用 try (<obtain resource here>) 语法。

我建议使用 try/catch/finally 块并放置 client.close();在 finally 块中