* 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_->View()->ZoomLimitsChanged(min_level, max_level);
}
void WebFrame::AllowGuestViewElementDefinition(
    v8::Local<v8::Object> context,
    v8::Local<v8::Function> register_cb) {
  v8::HandleScope handle_scope(isolate());
  v8::Context::Scope context_scope(context->CreationContext());
  blink::WebCustomElement::EmbedderNamesAllowedScope embedder_names_scope;
  web_frame_->RequestExecuteV8Function(context->CreationContext(), register_cb,
                                       v8::Null(isolate()), 0, nullptr,
                                       nullptr);
}
int WebFrame::GetWebFrameId(v8::Local<v8::Value> content_window) {
  
  
  
  content::RenderFrame* render_frame = GetRenderFrame(content_window);
  RenderFrameStatus render_frame_status(render_frame);
  if (!render_frame_status.is_ok())
    return -1;
  blink::WebLocalFrame* frame = render_frame->GetWebFrame();
  
  blink::WebFrame* parent_frame = frame->Parent();
  DCHECK(parent_frame);
  DCHECK(parent_frame->IsWebLocalFrame());
  return render_frame->GetRoutingID();
}
void WebFrame::SetSpellCheckProvider(mate::Arguments* args,