栈的定义:栈是线程运行需要的内存,那么和程序计数器一样,栈同样也是线程独立的,每个线程都会有独立的栈;
栈的组成:栈是由栈帧组成的;栈帧就是每个方法运行时需要的内存,包括参数,局部变量,返回参数地址等;先入后出的原则;每个栈都只有一个活动栈帧,对应着正在执行的方法
栈的几个常见问题:
1.垃圾回收是否涉及栈内存?
是不涉及的,每次方法执行完,栈内存就会被自动回收
2.栈内存是否越大越好?
不是的,像linux默认一个栈内存为1m,大家知道一个线程对应一个栈,假如你把一个栈内存设置为2m,假如计算机物理内存为512m,原本理论可以开512个线程,但是改成2m以后,只能开256个线程了
3.如何设置栈内存大小?
-Xss256k 单位可以变