質問: null; return html; ```
回答: 質問するときは環境に関する情報を詳しく記述しましょう。 OSやIDE、ランタイムや仮想マシンのバージョンの些細な違いが重要であったりするケースもあります。 * 技術系メーリングリストで質問するときのパターン・ランゲージ `KillProcessAndChildren()`の中では具体的に何をやっているのでしょうか? `"chromedriver.exe"`を指定しているということは、おそらくWindows環境なのだと思われますが、そもそもSeleniumはクロスプラットフォームな自動化ソリューションなので、Windows環境前提のコードを無条件で記述している時点で何かがおかしいと考えたほうがよいと思います。もしプロセスを勝手に強制終了しているのだとすれば、そのせいで状態がおかしくなっている可能性があります。 `ChromeDriver`クラスは`ChromiumDriver`派生、`ChromiumDriver`クラスは`RemoteWebDriver`派生、また`RemoteWebDriver`クラスは`IWebDriver`インターフェイスを実装していますが、`IWebDriver.Quit()`ではドライバーの終了とすべての関連ウィンドウのクローズを実行する仕様らしいので、おそらく本来は`Quit()`メソッドを呼び出すだけでよいはずです。 また、途中で例外が発生しても`Quit()`メソッドが必ず呼ばれるように、`try-finally`文を利用するべきです。現状、`RemoteWebDriver.Quit()`の内部では単純に`IDisposable.Dispose()`メソッドを呼び出しているだけなので、`using`文を使うという手もありますが、今後も`using`文だけでよいかどうかは`RemoteWebDriver`の実装に依存します。 * IWebDriver Interface * * * * using ステートメント - C# リファレンス | Microsoft Docs `PageSource`のHTML文字列をDBに保存している、というのも気になります。そのDBがエントリをメモリにマッピングしたままの状態(いわゆる非意図的オブジェクト保持)になっていればメモリリークします。本当にメモリ使用量の問題がSeleniumに起因するものなのかどうかを見極めるため、対照実験の観点から、DB保存をしなかった場合にどうなるか、ということも試したほうがよいと思います。