如何阻止WKWebView创建太多进程?

时间:2018-08-16 23:12:59

标签: macos webkit wkwebview wkwebviewconfiguration

我有一个MacOS应用程序,它创建了许多不同类型的NSView,其中一些包含WKWebView。 WKWebView的数量可能会变得非常大(数十个或更多)。

问题在于,每个WKWebViews都会创建多个进程,这可以在“活动监视器”中轻松看到。当进程数变得太大时,整个系统实际上将陷入停顿:正在运行的应用程序仍然运行缓慢,但是新应用程序无法启动,Finder停止工作,并且必须重新启动系统。

所以我正在寻找一种控制WKWebViews启动的进程数量的方法。

根据Apple文档,此操作由WKWebView的processPool属性管理,因为它们指出:“与Web视图关联的进程池由其Web视图配置指定。每个Web视图都具有自己的Web Content进程,直到达到了实现定义的流程限制;然后,具有相同流程池的Web视图最终共享了Web Content流程。” (来自页面:https://developer.apple.com/documentation/webkit/wkprocesspool?language=objc)。

我不知道如何定义“实现定义的过程限制”。当我NSLog WKWebView的配置的描述时,我得到了:

WKWebView配置说明:

>;偏好=>

我可以看到有一个processPool及其配置(称为_WKProcessPoolConfiguration),以及一个名为maximumProcessCount的值,该值设置为0。我假设0表示进程数不受限制,我想设置数量合理。但是我不知道如何设置该值! processPool本身没有属性,因此我不知道如何访问此maximumProcessCount值。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

  1. 您可以使用单例WKProcessPool,所有wkwebview.configuration.processpool都使用WKProcessPool单例;

  2. 它将解决CPU太高的问题。