13.JVM栈中可能出现的异常以及如何设置栈的大小

    技术2022-07-10  94

    目录

    1.栈中可能出现的异常2.设置栈内存的大小 -Xss

    1.栈中可能出现的异常

    栈中可能出现的异常有StackOverflowError异常和OutOfMemoryError。 Java虚拟机规范允许Java栈的大小可以是动态的或者是固定不变的。 1.如果采用固定大小的java虚拟机栈,那每一个线程的java虚拟机栈的容量可以在线程创建的时候独立选定。如果线程请求分配的容量超过Java虚拟机栈允许的最大容量,java虚拟机将会抛出一个StackOverflowError异常。 2.如果虚拟机栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的虚拟机栈,java虚拟机会抛出OOM异常。 演示栈中的StackOverflowError异常:递归调用。

    /** * 演示栈中的异常:StackOverflowError */ public class StackErrorTest { public static void main(String[] args) { main(args); } }

    2.设置栈内存的大小 -Xss

    使用-Xss设置栈内存的大小。 例子: -Xss1024k // 设置栈的大小为1024k -Xss1m // 设置栈的大小为1M 演示-Xss设置栈的大小之后的区别:

    public class StackErrorTest { private static int count = 1; public static void main(String[] args) { System.out.println(count); //默认情况下:count输出为11420; 当设置设置栈的大小: -Xss256k 之后 count输出为2465 count++; main(args); } }

    更多JVM文章文章请参考我的JVM专栏:https://blog.csdn.net/u011069294/category_10113093.html

    Processed: 0.009, SQL: 9