JAVA 方法中执行另一个方法的内存解析怎么理解。

//在栈里,是不是只要遇到一个方法就
//会重新开一个方法栈。就算是方法中包含的
//另一个方法,也会重新开一个方法栈。
//请说下,下面传参的内存解析。
public class Main {
public static void main(String[] args) {
XX x=new XX();
Meth m =new Meth();

m.get(23,x);   

}
}
class XX {
public void san(int i){
for(int k=1;k<i;k++){
for(int n=1;n<=k;n++){
System.out.print("*");
}
System.out.println("");
}
}

}

class Meth {
public void get (int w ,XX q){
q.san(w);
}
}

运用父类和子类。进行运行。

一个线程一个栈空间,并不是一个方法一个栈,有一个线程开一个栈。
调用方法会压栈,也就是分层,本地变量都在这个栈层里,参数里的基础数据类型传值,其他数据类型传地址,都在这个新层里,退出方法时这一层自动回收。
main函数里创建XX(),那么x对象在堆里,main栈层里有一个地址指向x,调用m.get创建新层,现在有两个指针指向x。
堆里保存的是对象的真实数据,栈里保存的是对象的地址。
可以用断点调试看