### Issue Details

* **Electron Version:**
  * v4.0.0
* **Operating System:**
  * Ubuntu 18.04.3 LTS 
* **Last Known Working Electron version:**
  * Unknown

### Expected Behavior
The Resident set size of the Main process when using desktopCapturer.getSources not growing.


### Actual Behavior
Memory leak in the Main process (rss memory growing) when using the desktopCapturer.getSources method in the Rendering process.

### To Reproduce

> main.js
```javascript
const {
    app,
    BrowserWindow
} = require('electron');
const url = require('url');
const path = require('path');

let win;

const logBytes = x => `${x[0]}=${x[1] / (1000.0 * 1000)}MB`;

const logMemory = () => {
    console.log(
        Object.entries(process.memoryUsage())
        .map(logBytes)
        .join(', ')
    );
};

const createWindow = () => {
    win = new BrowserWindow();
    win.loadURL(url.format({
        pathname: path.join(__dirname, 'index.html'),
        protocol: 'file:',
        slashes: true
    }));
};

try {
    app.on('ready', createWindow);
} catch (e) {
    console.err(e);
}

logMemory();
setInterval(logMemory, 10000);

```

> index.html 
```html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Hello World!</title>
  </head>
  <body>
    <h1>Hello World!</h1>
    We are using Node.js <span id="node-version"></span>,
    Chromium <span id="chrome-version"></span>,
    and Electron <span id="electron-version"></span>.

    <!-- You can also require other files to run in this process -->
    <script src="./renderer.js"></script>
  </body>
```

> renderer.js
```javascript
const electron = require('electron');
const desktopCapturer = electron.desktopCapturer;

const getSourcesLoop = () => {
    console.log('getSources() call');
    desktopCapturer.getSources({
        types: ['screen', 'window']
    }).then(sources => {
        console.log('getSources() success', sources);
        setTimeout(getSources, 5000);
    });
};
getSourcesLoop();
```


### Screenshots
<!-- If applicable, add screenshots to help explain your problem. -->
![image](https://user-images.githubusercontent.com/10058753/63587467-64534d00-c5a4-11e9-9622-630e62cebbdf.png)




shell/browser/api/atom_api_desktop_capturer.cc
Init(isolate);
}
DesktopCapturer::~DesktopCapturer() = default;
void DesktopCapturer::StartHandling(bool capture_window,
                                    bool capture_screen,
                                    const gfx::Size& thumbnail_size,
                                    bool fetch_window_icons) {
  fetch_window_icons_ = fetch_window_icons;
#if defined(OS_WIN)
  if (content::desktop_capture::CreateDesktopCaptureOptions()
          .allow_directx_capturer()) {
    
    
    auto duplicator = webrtc::DxgiDuplicatorController::Instance();
    using_directx_capturer_ = webrtc::ScreenCapturerWinDirectx::IsSupported();
  }
#endif  
  
  captured_sources_.clear();
  
  capture_window_ = capture_window;
  capture_screen_ = capture_screen;
  {
    
    
    if (capture_window) {
      window_capturer_ = std::make_unique<NativeDesktopMediaList>(
          content::DesktopMediaID::TYPE_WINDOW,
          content::desktop_capture::CreateWindowCapturer());