* Output of `node_modules/.bin/electron --version`: v3.0.5
* Operating System (Platform and Version): macOS 10.14

**Expected Behavior**
When webPreferences.sandbox is set to true and webFrame is using a provider for spell checking, the memory must be released after page reload.

**Actual behavior**
The memory isn't released and caused memory leak

**To Reproduce**

- Clone https://github.com/vrbsm/example-memory-leak-electron
- Run npm run start
Memory usage of electron process will be increasing in task manager after reloading the page several times

**Screenshots**
![test-memory-leak-01](https://user-images.githubusercontent.com/9887288/47675838-c2d4b800-db99-11e8-97e8-b5b27bcab929.gif)



atom/renderer/api/atom_api_web_frame.cc
web_frame_->SetName(blink::WebString::FromUTF8(name));
}
double WebFrame::SetZoomLevel(double level) {
  double result = 0.0;
  content::RenderFrame* render_frame =
      content::RenderFrame::FromWebFrame(web_frame_);
  render_frame->Send(new AtomFrameHostMsg_SetTemporaryZoomLevel(
      render_frame->GetRoutingID(), level, &result));
  return result;
}
double WebFrame::GetZoomLevel() const {
  double result = 0.0;
  content::RenderFrame* render_frame =
      content::RenderFrame::FromWebFrame(web_frame_);
  render_frame->Send(
      new AtomFrameHostMsg_GetZoomLevel(render_frame->GetRoutingID(), &result));
  return result;
}
double WebFrame::SetZoomFactor(double factor) {
  return blink::WebView::ZoomLevelToZoomFactor(
      SetZoomLevel(blink::WebView::ZoomFactorToZoomLevel(factor)));
}
double WebFrame::GetZoomFactor() const {
  return blink::WebView::ZoomLevelToZoomFactor(GetZoomLevel());
}
void WebFrame::SetVisualZoomLevelLimits(double min_level, double max_level) {
  web_frame_->View()->SetDefaultPageScaleLimits(min_level, max_level);
  web_frame_->View()->SetIgnoreViewportTagScaleLimits(true);
}
void WebFrame::SetLayoutZoomLevelLimits(double min_level, double max_level) {