Texture Arrays VRAM allocation

Can I change the number of layer in a 2D Texture Array during the lifetime of the object?
Is the VRAM allocated when first creating a 2D Texture Array or when uploading each layer?

No, you can’t make any changes to the number of layers. Think of it as a fixed-length array.

Calling glTexStorage2D() essentially calls glTexImage2D() several times, albeit with null data. Memory is allocated at this point, but because the image data is empty, there is no upload operation.

You can read more in-depth information on Khronos’s documentation: https://www.khronos.org/opengles/sdk/docs/man3/html/glTexStorage2D.xhtml