Cef Sharp内存使用问题和释放问题

问题描述 投票:0回答:0

Cef Sharp 在我的系统上消耗了大量的虚拟内存,即使在调用 chromiumWebBrowser dispose 和 Cef.Shutdown() 函数后它也没有释放内存。

我也可以通过 Process.GetCurrentProcess().VirtualMemorySize64 在 Cef_Demo_Application 上看到这个问题。 它总是占用近 35GB 的虚拟内存。

截至目前我使用的是 98.1.210.0 版本,我已经尝试过最新版本以及最新版本它占用了超过 70GB 的虚拟内存。

我尝试了各种解决方案,例如禁用缓存,禁用gpu-process和启用多线程消息循环,但都没有解决问题。 请提出解决方案或解决方法。

初始化代码

mySettings = new CefSettings
{
LogFile = aLogPath + "\\Cef.log",
AcceptLanguageList = CultureInfo.CurrentUICulture.Name,
IgnoreCertificateErrors = true, // useless
WindowlessRenderingEnabled = true, // useless
PersistSessionCookies = false, // useless
PersistUserPreferences = false, // useless    
};

mySettings.CachePath = aLogPath;
mySettings.JavascriptFlags = "false";
mySettings.CefCommandLineArgs.Add("disable-gpu-process", "1");
mySettings.CefCommandLineArgs.Add("disable-javascript", "1");
mySettings.CefCommandLineArgs.Add("process-per-site", "1");
mySettings.CefCommandLineArgs.Remove("process-per-tab");
// Here i can see 6 GB VM
if (!Cef.IsInitialized)
{
 Cef.Initialize(mySettings);                
 DebugTrace.Items.Add($"After Cef Initalize VM = { GetGB() } GB");
 mychromiumWebBrowser = new ChromiumWebBrowser();
 mychromiumWebBrowser.TabIndex = 0;
 mychromiumWebBrowser.BrowserSettings.Javascript = CefState.Disabled;
 mychromiumWebBrowser.BrowserSettings.LocalStorage = CefState.Disabled;
 mychromiumWebBrowser.BrowserSettings.Plugins = CefState.Disabled;
 mychromiumWebBrowser.BrowserSettings.LocalStorage = CefState.Disabled;

 // Here i can see 39 GB virtual memory allocated
}



**Dispose code** 

mychromiumWebBrowser.Dispose();
mychromiumWebBrowser = null;
Cef.GetGlobalCookieManager().DeleteCookies();
mySettings.Dispose();
Cef.Shutdown();
GC.Collect();
// here also i can see 39GB virtual memory allocated
c# memory-leaks cefsharp chromium-embedded
© www.soinside.com 2019 - 2024. All rights reserved.