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编写的方法

博客介绍了Java内存结构,重点讲解JVM栈帧,包括其记录方法信息,方法执行结束或异常时按先进后出原则销毁。还分析了栈溢出原因可能是递归调用产生过多栈帧,并给出增加栈内存、减少递归深度调用的解决办法。此外,提及程序计数器和本地方法栈。
&spm=1001.2101.3001.5002&articleId=109757221&d=1&t=3&u=044177c72f4e49648c6808100282443f)
404

被折叠的 条评论
为什么被折叠?



