8M triangles taking 1GB of VRAM is the theory, but if you open blender, cycles viewport, makes the default cube 8M tris, you see blender taking 6GB of Vram.. And if you take a terrain or a plane, and adaptive subd with a few viewport subd, until just 500K tris, it also takes 6GB of Vram. I don't know why, but Vram gets filled explosively with simple stuff.
If the plane is subd normally (no adaptative) until 32M polys, 4x8M bascally, it does NOT take 4GB of VRAM, it takes 16GB !
That's crazy but basically default cube to 8M tris adds 16GB of VRAM, NOT 1GB, for viewport cycles.
In EEVEE & workbench, 8M DOES equals 1GB vram though.
Also crazy, if two viewports are active, it doubles the VRAM usage, like if it stored the whole scene twice in VRAM. So with only 1 cycles viewport 8M tris takes 8GB of Vram, 16GB with twos. (I usually work with two....)
But not so much with default cube, or maybe because it doesn't flush objects that have been deleted and purged from the blend file, they stay in VRAM..
Really confusing.
And when rending, all that data will be copied again to the VRAM on top of the viewport ones, but takes way les space, 10GB of viewport VRAM only transcribe as 2GB for render, for exactly the same subdivs/tris count of 8M.
Also, denoise does take a flat 3GB fee on the vram, bam. on/off simply adds/remove 3GB instantly.
So bottom line, with 8GB you can subdivide a cube 8 times, and that's it.
Just as a visual proof:
poly count:

total VRAM:

blender only VRAM:

Vram used for rendering, probably flushed when taking all this screenshots:

The 8M poly cube:

subd 9 times:
