Runtime environments allow for dynamic memory management, without explicit allocations and deallocations from programmers. Thus, algorithms that are responsible for identifying live objects and freeing the unused memory are triggered throughout the application execution. Garbage collection algorithms can cause delays and affect the overall performance. Google's V8 JavaScript engine is a runtime environment that translates JavaScript to machine code and implements garbage collection. The engine is used, as an autonomous system or module, in projects such as: the Chrome web browser and Node.js with multi-platform support. Thus, there is a wide range of applications including real-time systems and web applications on the cloud, desktop, server and mobile devices and with different micro processor architecture (ARM, MIPS etc.) that use directly or indirectly the engine. This paper surveys the V8 virtual machine infrastructure on the techniques for managing memory dynamically. The focus is on memory and object layout, as well as the garbage collection techniques used. Furthermore, the paper defines the specific constraints that are imposed on V8, outlines historical approaches of solving the problem and describes its current state. Finally, it presents research directions that can be explored in garbage collection using the V8 runtime.