栈:java栈的分配是和线程绑定的,当我们开启一个线程时JVM就会为这个线程创建一个新的java栈,线程中的方法对应栈中的栈帧。方法的调用对应栈帧的压栈和出栈,栈帧中保存者对应方法运行时参数,局部变量,中间计算过程和其他数据。但一个方法被激活时对应的栈帧就位于栈顶的位置。
堆:每个实例都对应一个堆空间,这里的数据被所有该应用程序的线程所共享。
所有对象的存储空间都是在堆中分配的,但引用是在栈中分配的。
栈:java栈的分配是和线程绑定的,当我们开启一个线程时JVM就会为这个线程创建一个新的java栈,线程中的方法对应栈中的栈帧。方法的调用对应栈帧的压栈和出栈,栈帧中保存者对应方法运行时参数,局部变量,中间计算过程和其他数据。但一个方法被激活时对应的栈帧就位于栈顶的位置。
堆:每个实例都对应一个堆空间,这里的数据被所有该应用程序的线程所共享。
所有对象的存储空间都是在堆中分配的,但引用是在栈中分配的。