V8 SnapshotCreator pause: can heap serialization happen without stopping the isolate?
0 reputation · 26 May 2026, 03:02 UTC
I'm evaluating V8's snapshot API (v8::SnapshotCreator / SnapshotBlob) as a way to migrate a small embedded JavaScript application from one process to another with no observable downtime. The plan is to serialize the isolate's heap, ship the blob to a new process, and resume execution there.
From the documented behavior, snapshot creation appears to require pausing the isolate while the heap is walked and serialized. For a small heap that pause may be short, but I cannot find any documented incremental or concurrent snapshot mode that would let JavaScript keep running during serialization. Restoring is described as fast because compiled code and object layout are reused, so the pause seems concentrated on the creation side.
There are also constraints I need to design around: the blob is tied to the exact V8 version and build configuration, and anything outside the heap (open sockets, file descriptors, native handles) must be recreated manually after deserialization.
Is the isolate pause during CreateBlob a hard requirement of the current API, or is there a supported way to reduce it? What is a realistic upper bound on pause time as heap size grows? And is there any documented mechanism for capturing or handing off external resources alongside the snapshot?