java虚拟机栈的理解
虚拟机栈就是我们所熟知的栈内存,栈内存属于线程独有的.而在栈内存中的局部变量表中存储的引用类型只是存储对象的内存地址.对象的创建在堆内存中,即对象在线程共享区中.
局部变量表: 局部变量表的内存空间在编译时期完成分配,用于存放编译期间可知的各种基本数据类型,引用类型以及returnAdress类型.就是我们所熟知的栈内存.
模拟栈内存溢出
当在一个线程中不停的死循环调用一个方法时,因为方法的执行会在帧分配固定内存的大小,所以不停调用方法(前一个方法未执行完成弹出栈),会在帧中不断的创建固定大小的内存.这样就会导致
stackOverFlowError错误报出.如果不给每个线程的栈内存限定大小,那么当栈中无法向虚拟机要内存时,就会报错outMemoryerrror. 模拟代码如下:
栈内存溢出解释: