如何解决管理 UWP WebView 长时间内的整体内存消耗
TL;DR
我们正在寻找一种方法来强制 UWP Webview 清除我们库的任何缓存资产/内存。 我们的目标是能够重用相同的 WebView,而无需调用可能对同一宿主应用程序中的其他 WebView 产生不利影响的方法。
概述:
我们维护一个 C# SDK,它利用 WebView 来显示广告。 我们针对单页展示广告的高级工作流程包括:
- 当用户希望展示广告时创建 WebView。我们将 UWP 网页视图作为单独进程运行。
- 使用 WebView 的 "NavigateToString("")" 方法将一些任意 HTML/JavaScript 加载到 webview 中
- 在 20 到 30 秒的间隔后使用“NavigateToString”重新使用相同的 WebView 来显示另一个广告。
- 在从 XAML 树中删除广告后,将 WebView 设置回 about:blank/空字符串。
问题:
我们观察到 WebView 进程的内存使用量在幕后继续增加。 我们的期望是,在我们将 webview 导航到不同的 HTML/JS 片段后,我们应该在一段时间后观察到下降。 我们正在使用 ProcessExplorer 来观察 WWAHost.exe 进程的峰值工作集和线程数。 我们确认托管内存没有任何泄漏。
我们的尝试:
UWP App WebView Leaks Memory,doesn't clear images - 我们目前正在使用这个。在 12 小时的观察期内,它似乎减慢了逐渐增加的速度。加载新广告后,我们等待大约一分钟,我们注意到工作集内存减少。但是这种方法有点“hacky”。
How to clear UWP WebView cache? 我们已经尝试过这样做,但我们没有观察到任何明显的结果。此外,我们担心使用这种方法,因为它似乎适用于所有 WebView(其中一些我们甚至可能无法控制)这在幕后做了什么?
此外,我们知道理论上我们可以强制执行 GC.Collect() - 但如果我们可以提供帮助,我们宁愿不这样做。
问题
是否有一种优雅的方法可以强制清除 WebView 的缓存?我们目前采用的方法似乎有些奏效,但我们想知道表上是否还有我们尚未找到的其他选项。
我们非常感谢社区的任何帮助/见解!很高兴在必要时提供更多信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。