Enable idle GC for both browser and renderer.
This commit is contained in:
parent
4acbbd1ad7
commit
02de9c3b39
2 changed files with 16 additions and 0 deletions
|
@ -42,6 +42,7 @@ NodeBindings::~NodeBindings() {
|
||||||
WakeupEmbedThread();
|
WakeupEmbedThread();
|
||||||
uv_thread_join(&embed_thread_);
|
uv_thread_join(&embed_thread_);
|
||||||
uv_sem_destroy(&embed_sem_);
|
uv_sem_destroy(&embed_sem_);
|
||||||
|
uv_timer_stop(&idle_timer_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NodeBindings::Initialize() {
|
void NodeBindings::Initialize() {
|
||||||
|
@ -63,6 +64,10 @@ void NodeBindings::Initialize() {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Init idle GC.
|
||||||
|
uv_timer_init(uv_default_loop(), &idle_timer_);
|
||||||
|
uv_timer_start(&idle_timer_, IdleCallback, 5000, 5000);
|
||||||
|
|
||||||
// Open node's error reporting system for browser process.
|
// Open node's error reporting system for browser process.
|
||||||
node::g_standalone_mode = is_browser_;
|
node::g_standalone_mode = is_browser_;
|
||||||
|
|
||||||
|
@ -180,4 +185,9 @@ void NodeBindings::EmbedThreadRunner(void *arg) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// static
|
||||||
|
void NodeBindings::IdleCallback(uv_timer_t*, int) {
|
||||||
|
v8::V8::IdleNotification();
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace atom
|
} // namespace atom
|
||||||
|
|
|
@ -67,12 +67,18 @@ class NodeBindings {
|
||||||
// Thread to poll uv events.
|
// Thread to poll uv events.
|
||||||
static void EmbedThreadRunner(void *arg);
|
static void EmbedThreadRunner(void *arg);
|
||||||
|
|
||||||
|
// Do idle GC.
|
||||||
|
static void IdleCallback(uv_timer_t*, int);
|
||||||
|
|
||||||
// Whether the libuv loop has ended.
|
// Whether the libuv loop has ended.
|
||||||
bool embed_closed_;
|
bool embed_closed_;
|
||||||
|
|
||||||
// Dummy handle to make uv's loop not quit.
|
// Dummy handle to make uv's loop not quit.
|
||||||
uv_async_t dummy_uv_handle_;
|
uv_async_t dummy_uv_handle_;
|
||||||
|
|
||||||
|
// Timer to do idle GC.
|
||||||
|
uv_timer_t idle_timer_;
|
||||||
|
|
||||||
// Thread for polling events.
|
// Thread for polling events.
|
||||||
uv_thread_t embed_thread_;
|
uv_thread_t embed_thread_;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue