Java虚拟机本地方法栈溢出例子

JVM配置

-Xss128k

代码

package com.example.oom;

public class JavaVmStackSOF {
    public int getStackLength() {
        return stackLength;
    }

    private int stackLength = 1;


    public void stackLeak() {
        stackLength++;
        stackLeak();
    }
}

测试

class JavaVmStackSOFTest {
    @Test
    public void test() {
        JavaVmStackSOF sof = new JavaVmStackSOF();

        try {
            sof.stackLeak();
        } catch (Throwable throwable) {
            System.out.println("stack length: " + String.valueOf(sof.getStackLength()));
            throw throwable;
        }
    }
}

结果

Java虚拟机本地方法栈溢出例子_第1张图片

 

 调大xss的配置

-Xss1000M

二次结果

最终还是SOF,但是stack length达到了6000W

Java虚拟机本地方法栈溢出例子_第2张图片

 

你可能感兴趣的:(Java虚拟机本地方法栈溢出例子)