* 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.h
int world_id,
      const std::vector<mate::Dictionary>& scripts,
      mate::Arguments* args);
  
  void SetIsolatedWorldSecurityOrigin(int world_id,
                                      const std::string& origin_url);
  void SetIsolatedWorldContentSecurityPolicy(
      int world_id,
      const std::string& security_policy);
  void SetIsolatedWorldHumanReadableName(int world_id, const std::string& name);
  
  blink::WebCache::ResourceTypeStats GetResourceUsage(v8::Isolate* isolate);
  void ClearCache(v8::Isolate* isolate);
  
  v8::Local<v8::Value> Opener() const;
  v8::Local<v8::Value> Parent() const;
  v8::Local<v8::Value> Top() const;
  v8::Local<v8::Value> FirstChild() const;
  v8::Local<v8::Value> NextSibling() const;
  v8::Local<v8::Value> GetFrameForSelector(const std::string& selector) const;
  v8::Local<v8::Value> FindFrameByName(const std::string& name) const;
  v8::Local<v8::Value> FindFrameByRoutingId(int routing_id) const;
  v8::Local<v8::Value> RoutingId() const;
  blink::WebLocalFrame* web_frame_;
  DISALLOW_COPY_AND_ASSIGN(WebFrame);
};
}  
}  
#endif