java内存结构图
-
JVM栈帧 >>>用来记录执行的方法信息
一个方法就是一个栈帧空间!
问题:栈帧空间什么时候销毁?
回答:方法执行结束之后(或者方法发生异常)就会出栈,遵循先进后出原则销毁JVM栈帧。
int i =0;
底层汇编代码
iconst_1 在操作数栈中有1值
istore_1 将该1值放入到局部变量表中
iload_1 局部变量表中1复制给int类型
问题:为什么会发生栈溢出的问题
回答: 有可能由于递归调用,导致生产过多栈帧。
如何避免栈溢出解决方案:
1.增加栈内存 -Xss256k
2.减少递归深度调用,通过一定条件退出。
-
程序计数器 >>>用来记录当前线程的执行的行号,只有在多线程环境才有用
【javap -c -v class地址】将class文件反编译成汇编指令
-
本地方法栈 >>> natice方法java调用c编写的方法