java内存主要分为栈和堆,方法相关的部分主要在栈内存里,每个方法调用时会在栈里创建一个栈帧,存放局部变量和方法执行的信息。执行完后栈帧被销毁,局部变量消失。而对象实例存在堆里,由垃圾回收器管理。
**Java方法内存原理の撸串版:**
- 你每喊一次方法(比如“老板,来份烤腰子!”),JVM就掏个小本本(**栈内存**)记下:当前烤到第几串、辣椒粉撒没撒(**局部变量**)。
- 方法烤完(执行完),小本本直接撕了扔火堆,辣不辣都成灰(**栈帧销毁**)。
- 但如果你疯狂递归喊“再加10串!”……老板的小本本摞成山,手一抖全撒地沟油里——这就是**栈溢出**(StackOverflowError)!
**对象这种硬菜?直接扔后厨大冰柜(堆内存)**,谁想吃自己拿夹子取(引用),后厨老王(**GC垃圾回收**)半夜偷偷扔馊了的菜(没人引用的对象)。