* 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
.SetMethod("getResourceUsage", &WebFrame::GetResourceUsage)
      .SetMethod("clearCache", &WebFrame::ClearCache)
      .SetMethod("getFrameForSelector", &WebFrame::GetFrameForSelector)
      .SetMethod("findFrameByName", &WebFrame::FindFrameByName)
      .SetProperty("opener", &WebFrame::Opener)
      .SetProperty("parent", &WebFrame::Parent)
      .SetProperty("top", &WebFrame::Top)
      .SetProperty("firstChild", &WebFrame::FirstChild)
      .SetProperty("nextSibling", &WebFrame::NextSibling)
      .SetProperty("routingId", &WebFrame::RoutingId)
      .SetMethod("findFrameByRoutingId", &WebFrame::FindFrameByRoutingId);
}
}  
}  
namespace {
using atom::api::WebFrame;
void Initialize(v8::Local<v8::Object> exports,
                v8::Local<v8::Value> unused,
                v8::Local<v8::Context> context,
                void* priv) {
  v8::Isolate* isolate = context->GetIsolate();
  mate::Dictionary dict(isolate, exports);
  dict.Set("webFrame", WebFrame::Create(isolate));
  dict.Set(
      "WebFrame",
      WebFrame::GetConstructor(isolate)->GetFunction(context).ToLocalChecked());
}
}  
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_renderer_web_frame, Initialize)