我有一个 MacOS 应用程序,它创建了许多不同类型的 NSViews,其中一些包含 WKWebViews。WKWebViews 的数量可以变得相当大(几十个或更多)。
问题是这些 WKWebView 中的每一个都创建了多个进程,这在 Activity Monitor 中很容易看到。当进程数过多时,整个系统本质上会陷入死机:运行中的应用程序仍然运行缓慢,但无法启动新应用程序,Finder 停止工作,必须重新启动系统。
所以我正在寻找一种方法来控制 WKWebViews 启动的进程数。
根据 Apple 文档,这是由 WKWebView 的 processPool 属性管理的,因为它们声明:“与 Web 视图关联的进程池由其 Web 视图配置指定。每个 Web 视图都有自己的 Web 内容进程,直到实现 -达到定义的进程限制;之后,具有相同进程池的 Web 视图最终共享 Web 内容进程。” (来自页面:https ://developer.apple.com/documentation/webkit/wkprocesspool?language=objc )。
我无法弄清楚如何定义“实现定义的流程限制”。当我 NSLog WKWebView 配置的描述时,我得到这个:
WKWebView 配置说明:
>; 偏好=>
我可以看到有一个 processPool 和它的配置(称为 _WKProcessPoolConfiguration),以及一个称为 maximumProcessCount 的值,它设置为 0。我假设 0 表示进程计数是无限的,我想将其设置为合理的数量。但我不知道如何设置这个值!processPool 本身没有属性,所以我不知道如何访问这个 maximumProcessCount 值。
任何帮助是极大的赞赏。