这个问题与我最近关于LLVM的问题相似。
V8在手动管理的堆上分配JavaScript对象,其内存最终从mmap/VirtualAlloc(在Linux/Windows上)获得。但是,对于其内部数据结构,V8使用C++标准容器,如std::vector。如果这些容器需要分配内存,但无法分配,则通常会抛出std::bad_alloc异常。
然而,V8使用-fno-exceptions进行编译。如果不能使用异常,那么V8如何处理内部数据结构无法分配内存的情况?它会崩溃吗?如果是这样,是否会使嵌入V8的任何进程崩溃?
V8在手动管理的堆上分配JavaScript对象,其内存最终从mmap/VirtualAlloc(在Linux/Windows上)获得。但是,对于其内部数据结构,V8使用C++标准容器,如std::vector。如果这些容器需要分配内存,但无法分配,则通常会抛出std::bad_alloc异常。
然而,V8使用-fno-exceptions进行编译。如果不能使用异常,那么V8如何处理内部数据结构无法分配内存的情况?它会崩溃吗?如果是这样,是否会使嵌入V8的任何进程崩溃?