with the following test code and usage like average browser. The memory consumption went up to 800m+ in task manager (increased rapidly if constantly re-sizing the frame).
import javax.swing.JFrame;
import javafx.application.Platform;
import javafx.beans.value.InvalidationListener;
import javafx.beans.value.ObservableValue;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
/**
* @author rdong
*/
public class BrowserPanel
extends JFXPanel
{
private WebView browser;
private WebEngine webEngine;
private Scene scene;
public BrowserPanel(final String url)
{
Platform.runLater(new Runnable()
{
public void run()
{
createBrowserScene(url);
}
});
}
/**
* @param url
*
*/
protected void createBrowserScene(String url)
{
Group root = new Group();
setScene(scene = new Scene(root));
root.getChildren().add(browser = new WebView());
webEngine = new WebEngine(url);
browser.setEngine(webEngine);
scene.widthProperty().addListener(new InvalidationListener()
{
@Override
public void invalidated(ObservableValue ov)
{
browser.resize(scene.getWidth(), scene.getHeight());
}
});
scene.heightProperty().addListener(new InvalidationListener()
{
@Override
public void invalidated(ObservableValue ov)
{
browser.resize(scene.getWidth(), scene.getHeight());
}
});
browser.widthProperty().addListener(new InvalidationListener()
{
@Override
public void invalidated(ObservableValue ov)
{
browser.resize(scene.getWidth(), scene.getHeight());
}
});
browser.heightProperty().addListener(new InvalidationListener()
{
@Override
public void invalidated(ObservableValue ov)
{
browser.resize(scene.getWidth(), scene.getHeight());
}
});
}
public static void main(String[] args)
{
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(500, 400);
f.getContentPane().add(new BrowserPanel("http://yahoo.com"));
f.setVisible(true);
}
}
import javax.swing.JFrame;
import javafx.application.Platform;
import javafx.beans.value.InvalidationListener;
import javafx.beans.value.ObservableValue;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
/**
* @author rdong
*/
public class BrowserPanel
extends JFXPanel
{
private WebView browser;
private WebEngine webEngine;
private Scene scene;
public BrowserPanel(final String url)
{
Platform.runLater(new Runnable()
{
public void run()
{
createBrowserScene(url);
}
});
}
/**
* @param url
*
*/
protected void createBrowserScene(String url)
{
Group root = new Group();
setScene(scene = new Scene(root));
root.getChildren().add(browser = new WebView());
webEngine = new WebEngine(url);
browser.setEngine(webEngine);
scene.widthProperty().addListener(new InvalidationListener()
{
@Override
public void invalidated(ObservableValue ov)
{
browser.resize(scene.getWidth(), scene.getHeight());
}
});
scene.heightProperty().addListener(new InvalidationListener()
{
@Override
public void invalidated(ObservableValue ov)
{
browser.resize(scene.getWidth(), scene.getHeight());
}
});
browser.widthProperty().addListener(new InvalidationListener()
{
@Override
public void invalidated(ObservableValue ov)
{
browser.resize(scene.getWidth(), scene.getHeight());
}
});
browser.heightProperty().addListener(new InvalidationListener()
{
@Override
public void invalidated(ObservableValue ov)
{
browser.resize(scene.getWidth(), scene.getHeight());
}
});
}
public static void main(String[] args)
{
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(500, 400);
f.getContentPane().add(new BrowserPanel("http://yahoo.com"));
f.setVisible(true);
}
}
- blocks
-
JDK-8128274 WebView takes up high memory usage when browsing until it goes crashed
-
- Closed
-