• 配置JVM堆栈大小


    概述

    在本快速教程中,我们将了解如何在HotSpot JVM中配置线程堆栈大小。

    默认堆栈大小

    每个JVM线程都有一个私有的本机堆栈来存储调用堆栈信息、本地变量和部分结果。因此,堆栈在方法调用中起着至关重要的作用。而每个JVM实现都使用JVM规范

    但是,其他实现细节,例如堆栈大小,是特定于实现的。从现在起,我们将讨论HotSpot JVM,并将使用JVM术语和设置HotSpot JVM堆栈大小。

    当JVM在创建线程的同时会创建堆栈。

    如果我们不指定堆栈的大小,JVM将创建一个默认大小的堆栈。通常,这个默认大小取决于操作系统和计算机体系结构。例如,以下是Java 14的一些默认大小:

    Linux/x86(64位):1 MB

    macOS(64位):1 MB

    Oracle Solaris(64位):1 MB

    在Windows上,JVM使用系统范围的堆栈大小

    基本上,在大多数现代操作系统和体系结构中,我们可以预期每个堆栈大约有1MB。

    自定义堆栈大小

    要更改堆栈大小,可以使用-Xss调整标志。例如,-Xss1048576将堆栈大小设置为1 MB:

    java-Xss1048576
    
    • 1

    如果我们不想用字节来计算大小,我们可以使用一些方便的快捷方式来指定不同的单位-字母k或k表示KB,m或m表示MB,g或g表示GB。让我们来看看不同的堆栈大小:

    -Xss1m
    
    -Xss1024k
    
    • 1
    • 2
    • 3

    与-Xss类似,我们还可以使用-XX:ThreadStackSize 来配置堆栈大小。但是-XX:ThreadStackSize的语法有点不同。我们应该用等号分隔大小和配置名:

    java-XX:ThreadStackSize=1024 
    
    • 1

    HotSpot JVM不允许我们使用小于最小值的大小:

    $ java -Xss1K -version
    The Java thread stack size specified is too small. Specify at least 144k
    Error: Could not create the Java Virtual Machine.
    Error: A fatal exception has occurred. Program will exit.
    
    • 1
    • 2
    • 3
    • 4

    此外,它不允许我们使用超过最大值(通常为1 GB)的大小:

    $ java -Xss2g -version
    Invalid thread stack size: -Xss2g
    The specified size exceeds the maximum representable size.
    Error: Could not create the Java Virtual Machine.
    Error: A fatal exception has occurred. Program will exit.
    
    • 1
    • 2
    • 3
    • 4
    • 5

    结论

    在这个快速教程中,我们了解了如何在HotSpot JVM中配置线程堆栈大小。

  • 相关阅读:
    【Xilinx AX7103 MicroBalze学习笔记6】MicroBlaze 自定义 IP 核封装实验
    千访丨瓜分小红书流量池?资深操盘手来了!
    功能测试
    【Golang之路】——接口
    css选择器优先级问题
    LinkedHashSet详解
    redis 多租户隔离 ACL 权限控制(redis-cli / nodejs的ioredis )
    ArcGIS:如何进行缓冲区分析(以市区选择住房位置为例)?
    Python异步编程之web框架 异步vs同步 数据库IO任务并发支持对比
    素描的正方体怎么绘制面
  • 原文地址:https://blog.csdn.net/m0_67402731/article/details/126618971