V8 is continuously allocating and freeing memory

13 views
Skip to first unread message

theratliter theratliter

unread,
Jul 24, 2026, 1:01:54 AM (4 days ago) Jul 24
to v8-users
Hi all, I recently encountered an issue where the Node.js process is consuming excessive CPU resources.

current statck:


#0  0x00000000014a1ae4 in v8::internal::RootScavengeVisitor::VisitRootPointers(v8::internal::Root, char const*, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot) ()
No symbol table info available.
#1  0x000000000120cee7 in v8::internal::HandleScopeImplementer::IterateThis(v8::internal::RootVisitor*) ()
No symbol table info available.
#2  0x000000000140de63 in v8::internal::Heap::IterateRoots(v8::internal::RootVisitor*, v8::base::EnumSet<v8::internal::SkipRoot, int>, v8::internal::Heap::IterateRootsMode) ()
No symbol table info available.
#3  0x00000000014af853 in v8::internal::ScavengerCollector::CollectGarbage() ()
No symbol table info available.
#4  0x000000000140a272 in v8::internal::Heap::Scavenge() ()
No symbol table info available.
#5  0x000000000142845a in v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::internal::GarbageCollectionReason, char const*) ()
No symbol table info available.
#6  0x0000000001429f39 in v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags)::{lambda()#2}::operator()() const ()
No symbol table info available.
#7  0x000000000142d3c8 in void heap::base::Stack::SetMarkerAndCallbackImpl<v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags)::{lambda()#2}>(heap::base::Stack*, void*, void const*) ()
No symbol table info available.
#8  0x0000000001c93091 in PushAllRegistersAndIterateStack ()
No symbol table info available.
#9  0x000000000142a855 in v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) ()
No symbol table info available.
#10 0x00000000013ff038 in v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) ()
No symbol table info available.
#11 0x00000000013fff65 in v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) ()
No symbol table info available.
#12 0x00000000013d8c3e in v8::internal::Factory::NewFillerObject(int, v8::internal::AllocationAlignment, v8::internal::AllocationType, v8::internal::AllocationOrigin) ()
No symbol table info available.
#13 0x000000000183a25c in v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) (

the output of `strace -p` is as follows:

mprotect(0x37eb99140000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x2ccfb58c0000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x2ccfb58c0000
madvise(0x2ccfb58c0000, 3964928, MADV_DONTFORK) = 0
munmap(0x2ccfb5c49000, 258048)          = 0
mprotect(0x2ccfb58c0000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0xc43aac40000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0xc43aac40000
madvise(0xc43aac40000, 3964928, MADV_DONTFORK) = 0
munmap(0xc43aafc9000, 258048)           = 0
mprotect(0xc43aac40000, 3706880, PROT_READ|PROT_WRITE) = 0
munmap(0xc00e3000000, 3706880)          = 0
munmap(0x3b0634a40000, 3706880)         = 0
munmap(0x19cdf9cc0000, 3706880)         = 0
munmap(0x36272a040000, 3706880)         = 0
munmap(0x354ff2200000, 3706880)         = 0
munmap(0x251679e00000, 3706880)         = 0
munmap(0x37eb99140000, 3706880)         = 0
munmap(0x2ccfb58c0000, 3706880)         = 0
getpid()                                = 44676
mmap(0x7933b980000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7933b980000
madvise(0x7933b980000, 3964928, MADV_DONTFORK) = 0
munmap(0x7933bd09000, 258048)           = 0
mprotect(0x7933b980000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x34e9edfc0000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x34e9edfc0000
madvise(0x34e9edfc0000, 3964928, MADV_DONTFORK) = 0
munmap(0x34e9ee349000, 258048)          = 0
mprotect(0x34e9edfc0000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x292f254c0000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x292f254c0000
madvise(0x292f254c0000, 3964928, MADV_DONTFORK) = 0
munmap(0x292f25849000, 258048)          = 0
mprotect(0x292f254c0000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x1b6bcbc00000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x1b6bcbc00000
madvise(0x1b6bcbc00000, 3964928, MADV_DONTFORK) = 0
munmap(0x1b6bcbf89000, 258048)          = 0
mprotect(0x1b6bcbc00000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0xacb4f8c0000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0xacb4f8c0000
madvise(0xacb4f8c0000, 3964928, MADV_DONTFORK) = 0
munmap(0xacb4fc49000, 258048)           = 0
mprotect(0xacb4f8c0000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x147824d00000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x147824d00000
madvise(0x147824d00000, 3964928, MADV_DONTFORK) = 0
munmap(0x147825089000, 258048)          = 0
mprotect(0x147824d00000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x14ab8400000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x14ab8400000
madvise(0x14ab8400000, 3964928, MADV_DONTFORK) = 0
munmap(0x14ab8789000, 258048)           = 0
mprotect(0x14ab8400000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x6ada7580000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x6ada7580000
madvise(0x6ada7580000, 3964928, MADV_DONTFORK) = 0
munmap(0x6ada7909000, 258048)           = 0
mprotect(0x6ada7580000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x2ca3cd800000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x2ca3cd800000
madvise(0x2ca3cd800000, 3964928, MADV_DONTFORK) = 0
munmap(0x2ca3cdb89000, 258048)          = 0
mprotect(0x2ca3cd800000, 3706880, PROT_READ|PROT_WRITE) = 0
munmap(0x7933b980000, 3706880)          = 0
munmap(0x34e9edfc0000, 3706880)         = 0
munmap(0x292f254c0000, 3706880)         = 0
munmap(0x1b6bcbc00000, 3706880)         = 0
munmap(0xacb4f8c0000, 3706880)          = 0
munmap(0x147824d00000, 3706880)         = 0
munmap(0x14ab8400000, 3706880)          = 0
munmap(0x6ada7580000, 3706880)          = 0
getpid()                                = 44676
mmap(0x2621a8ac0000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x2621a8ac0000
madvise(0x2621a8ac0000, 3964928, MADV_DONTFORK) = 0
munmap(0x2621a8e49000, 258048)          = 0
mprotect(0x2621a8ac0000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x13b3edc40000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x13b3edc40000
madvise(0x13b3edc40000, 3964928, MADV_DONTFORK) = 0
munmap(0x13b3edfc9000, 258048)          = 0
mprotect(0x13b3edc40000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x96f98840000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x96f98840000
madvise(0x96f98840000, 3964928, MADV_DONTFORK) = 0
munmap(0x96f98bc9000, 258048)           = 0
mprotect(0x96f98840000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x197b051c0000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x197b051c0000
madvise(0x197b051c0000, 3964928, MADV_DONTFORK) = 0
munmap(0x197b05549000, 258048)          = 0
mprotect(0x197b051c0000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x3a37d6000000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x3a37d6000000
madvise(0x3a37d6000000, 3964928, MADV_DONTFORK) = 0
munmap(0x3a37d6389000, 258048)          = 0
mprotect(0x3a37d6000000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x107215d80000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x107215d80000
madvise(0x107215d80000, 3964928, MADV_DONTFORK) = 0
munmap(0x107216109000, 258048)          = 0
mprotect(0x107215d80000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x1fd4c9a40000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x1fd4c9a40000
madvise(0x1fd4c9a40000, 3964928, MADV_DONTFORK) = 0
munmap(0x1fd4c9dc9000, 258048)          = 0
mprotect(0x1fd4c9a40000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x298f7a580000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x298f7a580000
madvise(0x298f7a580000, 3964928, MADV_DONTFORK) = 0
munmap(0x298f7a909000, 258048)          = 0
mprotect(0x298f7a580000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x2170bed40000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x2170bed40000
madvise(0x2170bed40000, 3964928, MADV_DONTFORK) = 0
munmap(0x2170bf0c9000, 258048)          = 0
mprotect(0x2170bed40000, 3706880, PROT_READ|PROT_WRITE) = 0
munmap(0x2621a8ac0000, 3706880)         = 0
munmap(0x13b3edc40000, 3706880)         = 0
munmap(0x96f98840000, 3706880)          = 0
munmap(0x197b051c0000, 3706880)         = 0
munmap(0x3a37d6000000, 3706880)         = 0
munmap(0x107215d80000, 3706880)         = 0
munmap(0x1fd4c9a40000, 3706880)         = 0
munmap(0x298f7a580000, 3706880)         = 0
getpid()                                = 44676
mmap(0x125ff5a00000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x125ff5a00000
madvise(0x125ff5a00000, 3964928, MADV_DONTFORK) = 0
munmap(0x125ff5d89000, 258048)          = 0
mprotect(0x125ff5a00000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x19c2b9fc0000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x19c2b9fc0000
madvise(0x19c2b9fc0000, 3964928, MADV_DONTFORK) = 0
munmap(0x19c2ba349000, 258048)          = 0
mprotect(0x19c2b9fc0000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x270237080000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x270237080000
madvise(0x270237080000, 3964928, MADV_DONTFORK) = 0
munmap(0x270237409000, 258048)          = 0
mprotect(0x270237080000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x1a01fcdc0000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x1a01fcdc0000
madvise(0x1a01fcdc0000, 3964928, MADV_DONTFORK) = 0
munmap(0x1a01fd149000, 258048)          = 0
mprotect(0x1a01fcdc0000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x14c71f140000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x14c71f140000
madvise(0x14c71f140000, 3964928, MADV_DONTFORK) = 0
munmap(0x14c71f4c9000, 258048)          = 0
mprotect(0x14c71f140000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x36fa5a540000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x36fa5a540000
madvise(0x36fa5a540000, 3964928, MADV_DONTFORK) = 0
munmap(0x36fa5a8c9000, 258048)          = 0
mprotect(0x36fa5a540000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x2b3314900000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x2b3314900000
madvise(0x2b3314900000, 3964928, MADV_DONTFORK) = 0
munmap(0x2b3314c89000, 258048)          = 0
mprotect(0x2b3314900000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x344dcb740000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x344dcb740000
madvise(0x344dcb740000, 3964928, MADV_DONTFORK) = 0
munmap(0x344dcbac9000, 258048)          = 0
mprotect(0x344dcb740000, 3706880, PROT_READ|PROT_WRITE) = 0
mmap(0x2ea145300000, 3964928, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x2ea145300000
madvise(0x2ea145300000, 3964928, MADV_DONTFORK) = 0
munmap(0x2ea145689000, 258048)          = 0
mprotect(0x2ea145300000, 3706880, PROT_READ|PROT_WRITE) = 0
munmap(0x125ff5a00000, 3706880)         = 0
munmap(0x19c2b9fc0000, 3706880)         = 0
munmap(0x270237080000, 3706880)         = 0
munmap(0x1a01fcdc0000, 3706880)         = 0
munmap(0x14c71f140000, 3706880)         = 0
munmap(0x36fa5a540000, 3706880)         = 0
munmap(0x2b3314900000, 3706880)         = 0
munmap(0x344dcb740000, 3706880)         = 0
getpid()                                = 44676
Reply all
Reply to author
Forward
0 new messages