阿里P8的这点Java底层?-虚拟机栈与调优 (内容不够丰满,待补充)

虚拟机栈与调优 (内容不够丰满)

jvm栈大小

-Xss,指设定每个线程的堆栈大小
虚拟机栈默认大小为1M,如下
在这里插入图片描述上图1024的单位是1k,下图演示通过-Xss指定栈大小为228
在这里插入图片描述

jvm限定堆栈最小值

上例显示,1.6限定的最小堆栈大小为160k,1.8限定的最小堆栈大小为228k
思考1: 最小堆栈大小是怎么确定的?哪些因素影响?
??

栈溢出

下例通过无限递归产生栈溢出,通过变量记录下栈溢出时,最大的栈深度
在这里插入图片描述
思考:分析下上例栈溢出产生的原因
此例,栈溢出的原因:jvm虚拟机栈中,test()方法都会有一个栈帧,当test()方法内再调用test()方法时栈中就会再创建一个栈帧,当无限递归时,就会产生很多test()方法栈帧,直到给栈塞满,再创建栈帧时栈内存不够就发生栈溢出了。
思考:上例设置堆栈大小为228k,测试出栈深度为1515,那么每个test方法的栈帧大小大概是多少?
计算:(228 * 1024 / 1515)B

你可能感兴趣的:(java)