目录

如何修改java中堆栈空间的默认大小

如何修改java中堆、栈空间的默认大小

1、修改堆、栈空间大小的命令

在命令行中输入java -X可以得到设置java堆大小和栈大小的命令

https://i-blog.csdnimg.cn/blog_migrate/d9d4e80e02e49963e01f1ef10275a017.png

2、修改java运行时的堆和栈空间

https://i-blog.csdnimg.cn/blog_migrate/1b684578e09b21c4444d117db901594b.png

https://i-blog.csdnimg.cn/blog_migrate/94a21ac340d28183b62ec78574816f1a.png

  • 进入界面后 按Alt+V

https://i-blog.csdnimg.cn/blog_migrate/5d7d0d09d880ce9e5648095fce7fe682.png

https://i-blog.csdnimg.cn/blog_migrate/f406ee1e05f0177d5cee0e69b9572e12.png

3、检验堆空间修改

3.1 测试类

public class StackTest {
    public static void main(String[] args) {
        //返回Java虚拟机中的堆内存总量
        long xmsMemory = Runtime.getRuntime().totalMemory() / 1024 / 1024;
        //返回Java虚拟机中使用的最大堆内存
        long xmxMemory = Runtime.getRuntime().maxMemory() / 1024 / 1024;
        System.out.println("-Xms:" + xmsMemory + "M");
        System.out.println("-Xmx:" + xmxMemory + "M");

    }

}

3.2 测试结果

  • 修改前

本机的默认初始堆空间大小为 123M,默认的最大堆空间为 1799M

https://i-blog.csdnimg.cn/blog_migrate/de4867a327da581b3e06ea890b2b5773.png

  • 修改后

https://i-blog.csdnimg.cn/blog_migrate/0463fe9bb69f44ebedfa74af08de490b.png

https://i-blog.csdnimg.cn/blog_migrate/6a9300e27634f30a07edafe4fc6a8276.png

通过两次结果对比可以看出堆空间大小变化了;

4、检验栈空间修改

4.1 测试类

public class StackSizeTest {
private static int count = 1;

    public static void stack() {
        System.out.println(count++);
        stack();
    }

    public static void main(String[] args) {
        StackSizeTest.stack();
    }

}

4.2 测试结果

  • 修改前

修改前递归次数达到了 9864 次,抛出了栈内存溢出的异常

https://i-blog.csdnimg.cn/blog_migrate/291c15f59e80613a52fb51b0cf6cac1e.png

  • 修改后

修改后递归次数达到 2317 次就抛出了栈内存溢出的异常,说明栈空间大小被改变了,从验证结果也能大致估算出本机的默认栈空间大小大概为 1M。

https://i-blog.csdnimg.cn/blog_migrate/018cc8aa5be43dedb48913e55c1683a4.png

https://i-blog.csdnimg.cn/blog_migrate/ea0f81a6aa0f563d299f78f7ccebc7e8.png