我在使用Javafx中的WebView处理时遇到了问题。 我的任务管理器中的内存使用量超出了所有内容,并以崩溃结束。
我有一个简单的代码示例来重新创建问题:
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.concurrent.Worker;
import javafx.scene.Scene;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class WebViewSample extends Application {
public boolean cycle = false;
public static void main(String[] args) {
launch();
}
@Override public void start(Stage primaryStage) {
WebView webView = new WebView();
WebEngine engine = webView.getEngine();
engine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
@Override
public void changed(ObservableValue<? extends Worker.State> obs, Worker.State old, Worker.State current) {
if(javafx.concurrent.Worker.State.SUCCEEDED == current) {
if(cycle) {
engine.load("http://www.google.com");
} else {
engine.load("http://www.yahoo.com");
}
cycle = !cycle;
}
}
});
engine.load("http://www.google.com");
primaryStage.setScene(new Scene(webView));
primaryStage.show();
}
}
基本上,代码只是交替加载两个网站!我的问题不仅仅是这两个页面,在我的主程序中加载所有不同的URL。但这也重现了问题。
我到目前为止尝试过:
如果这是因为我的例子中的错误,我错过了某些东西或自然的事情,我真的不感到害羞......
我很高兴得到任何帮助,谢谢!
答案 0 :(得分:0)
2016年7月22日编辑: 显然,这已在JDK 9中修复:http://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8159594
我们也看到过使用JDK 1.8.0_92的类似行为。
只是在这两页之间交替导致内存使用无法控制地攀升。
第1页:
UU
第2页:
<head></head>
<body>
<h1>Page 1</h1>
<script>
window.location.href = "page2.html";
</script>
</body>
我们目前无法找到这种明显内存泄漏的任何解决方案。