JVM内存——虚拟机栈和本地方法栈
虚拟机栈
虚拟机栈是用于描述java方法执行的内存模型。 每个java方法在执行时,会创建一个“栈帧”,栈帧的结构分为“局部变量表、操作数栈、动态链接、方法出口”几个部分。通常说的“堆内存、栈内存”中的栈内存指的就是虚拟机栈,确切的说,指的是虚拟机栈的栈帧中的局部变量表,因为这里存放了一个方法的所有局部变量。 虚拟机栈的特点
线程私有,每个线程都有自己独立的虚拟机栈。
虚拟机栈的StackOverflowError 若单个线程请求的栈深度大于虚拟机允许的深度,则会抛出StackOverflowError(栈溢出错误) JVM会为每个线程的虚拟机栈分配一定的内存大小(-Xss参数),因此虚拟机栈能够容纳的栈帧数量是有限的,若栈帧不断进栈而不出栈,最终会导致当前线程虚拟机栈的内存空间耗尽。比如一个无结束条件的递归函数调用。 虚拟机栈的OutOfMemoryError 不同于StackOverflowError,
共有 0 条评论