Great video.. really helpful explanation overall.
Just a small technical correction: in the diagram it looks like object fields (like x and y) are stored in the stack inside a “frame for the object”, but in Java those fields actually live in the heap as part of the object itself. The stack only stores method frames and references to objects.
Also, stack frames are created per method call (such as main) and are removed when the method finishes — they are not created per object.
Might be worth clarifying this to avoid confusion, but the rest of the explanation is very good 👍
I'll add an image to show the correct visualization of the stack, heap, and string pool.