ChromeDriver high memory / CPU usage and random hanging usually happens because of:
- Too many Chrome processes/tabs
-
Selenium waiting incorrectly (
Thread.Sleep) - DevTools/Console open
- Images/CSS/extensions loading
- Driver objects not disposed
- Infinite AJAX/network calls
- Running non-headless UI rendering
- Memory leak from repeatedly creating drivers
Your screenshot shows:
- Chrome paused in debugger
- DevTools open
- 7 Chrome processes using ~1.5 GB RAM
That itself can cause freezing.
Best Ways to Reduce ChromeDriver Memory + Avoid Stuck
1. Use Optimized ChromeOptions
var options = new ChromeOptions();
options.AddArgument("--disable-gpu");
options.AddArgument("--disable-dev-shm-usage");
options.AddArgument("--no-sandbox");
options.AddArgument("--disable-extensions");
options.AddArgument("--disable-popup-blocking");
options.AddArgument("--disable-notifications");
options.AddArgument("--disable-background-networking");
options.AddArgument("--disable-sync");
options.AddArgument("--disable-translate");
options.AddArgument("--metrics-recording-only");
options.AddArgument("--mute-audio");
options.AddArgument("--no-first-run");
options.AddArgument("--disable-default-apps");
options.AddArgument("--disable-background-timer-throttling");
options.AddArgument("--disable-renderer-backgrounding");
options.AddArgument("--disable-backgrounding-occluded-windows");
options.PageLoadStrategy = PageLoadStrategy.Eager;
2. Disable Images and CSS (Huge Performance Gain)
options.AddUserProfilePreference("profile.managed_default_content_settings.images", 2);
options.AddUserProfilePreference("profile.default_content_setting_values.notifications", 2);
For heavy sites this alone reduces:
- CPU by 40–60%
- Memory by 30–50%
3. Use Headless Mode
UI rendering consumes huge RAM.
options.AddArgument("--headless=new");
If automation does not require visible browser, always use headless.
4. NEVER Use Large Thread.Sleep
Bad:
Thread.Sleep(10000);
Use explicit waits:
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(d =>
d.FindElement(By.Id("txtUser")).Displayed);
Thread.Sleep causes:
- freezes
- stuck UI
- unnecessary CPU wait
5. Properly Dispose Driver
Very important.
driver.Quit();
driver.Dispose();
Otherwise Chrome processes remain in background.
6. Reuse Single Driver Instead of Creating Many
BAD:
for(int i=0;i<100;i++)
{
new ChromeDriver();
}
GOOD:
ChromeDriver driver = new ChromeDriver(options);
for(int i=0;i<100;i++)
{
// reuse
}
7. Kill Zombie Chrome Processes
Sometimes Selenium crashes leaving Chrome alive.
Before start:
foreach (var process in Process.GetProcessesByName("chrome"))
{
process.Kill();
}
Or only kill chromedriver:
foreach (var process in Process.GetProcessesByName("chromedriver"))
{
process.Kill();
}
8. Reduce Logging
Logging increases memory.
options.SetLoggingPreference(LogType.Browser, LogLevel.Off);
9. Disable Automation Banner
options.AddExcludedArgument("enable-automation");
options.AddAdditionalOption("useAutomationExtension", false);
10. Use Correct ChromeDriver Version
Mismatch between:
- Chrome version
- ChromeDriver version
causes:
- hangs
- crashes
- memory spikes
Use matching versions.
11. Avoid Opening DevTools
Your screenshot has DevTools open.
This increases:
- RAM
- CPU
- JS debugging overhead
Avoid:
options.AddArgument("--auto-open-devtools-for-tabs");
12. Set Timeouts Properly
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(30);
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
13. Use CDP to Block Unwanted Resources
Very powerful optimization.
driver.ExecuteCdpCommand("Network.enable", new Dictionary<string, object>());
driver.ExecuteCdpCommand("Network.setBlockedURLs",
new Dictionary<string, object>
{
["urls"] = new string[]
{
"*.png",
"*.jpg",
"*.gif",
"*.mp4",
"*.woff"
}
});
Huge improvement for heavy websites.
14. Best Production Setup
var service = ChromeDriverService.CreateDefaultService();
service.HideCommandPromptWindow = true;
var options = new ChromeOptions();
options.AddArgument("--headless=new");
options.AddArgument("--disable-gpu");
options.AddArgument("--no-sandbox");
options.AddArgument("--disable-dev-shm-usage");
options.AddArgument("--disable-extensions");
options.AddArgument("--disable-popup-blocking");
options.AddArgument("--blink-settings=imagesEnabled=false");
options.PageLoadStrategy = PageLoadStrategy.Eager;
using (IWebDriver driver = new ChromeDriver(service, options))
{
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(30);
driver.Navigate().GoToUrl("https://example.com");
WebDriverWait wait =
new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(d => d.FindElement(By.TagName("body")));
Console.WriteLine("Loaded");
}
15. If Site Still Freezes
Possible causes:
- Infinite JS rendering
- Anti-bot detection
- Huge DOM tables
- Memory leak in repeated scraping
Then use:
options.PageLoadStrategy = PageLoadStrategy.None;
And manually wait only for required elements.
Most Important Fixes For Your Case
Based on your screenshot:
- Close DevTools
- Use headless mode
- Disable images
-
Replace
Thread.Sleep - Reuse single driver
- Kill zombie chrome processes
-
Use
PageLoadStrategy.Eager - Dispose driver properly
These usually reduce RAM from:
- 1.5 GB → 250–400 MB
and remove most hanging issues.
Sign up here with your email
ConversionConversion EmoticonEmoticon