Skip to content
0:00 / 0:00

#v8#garbagecollection#orinoco

Orinoco: The new V8 Garbage Collector Peter Marshall

Nearform

6.3K subscribers • 3 videos on Hallway

YouTube
  • Recommended by 1 person: 1 in engineering communities.
  • Presented by Peter Marshall

Advanced. Deep dive for people who know the field.

16K views7 years ago1 recommendation

Systems programmingProgramming languagesCompilers and interpretersMemory managementPerformance and optimization

Peter Marshall explains the architecture, implementation challenges, and performance benefits of Orinoco, the parallel and concurrent garbage collector in V8.

About three years ago we started to work on a new garbage collector for V8, codename Orinoco. Orinoco is a high-performance, low-latency, mostly parallel and concurrent garbage collector. Instead of developing Orinoco behind a flag, we changed the old V8 garbage collection codebase on the fly and landed its features incrementally to allow developers and users benefit immediately. This talk will explain the main Orinoco features, its implementation challenges, and which classes of applications and programming patterns will benefit the most from the new garbage collection architecture.

Why it's here

1 person recommends this

What people say. Recommended as an insightful deep dive into how the V8 engine manages memory and garbage collection concurrently.

u/unmaintainablejsin r/node • Recommends

On “How do certain libraries bypass the single-threaded nature of NodeJS?”

…f the V8, as well as runtime optimizations (selective compilation to machine code) performed by Turbofan are both single-threaded, the Orinoco garbage collector sometimes uses helper threads in order to perform parallel scavenging, concurrent marking and sweeping. Here are some insightful talks on these topics: - Great overview of the event loop: link to this video - Inner workings of the Orinoco GC in V8: link to this video EDIT: as of the title question, the plain JS that you write will generally be executed in the main thread. If I remember correctly, there is a way to write a function that will be queued for execution in the libuv's thread pool when developing Node addons in C++ and that seems to be the cas…