当前位置: 首页 > 知识库问答 >
问题:

可动态扩展的JVM堆栈

舒浩邈
2023-03-14

JVM规范表明JVM堆栈可以是固定大小的,也可以是动态扩展的。

-Xss JVM选项允许设置固定大小,如果我没有设置这个选项是设置默认值(大约512-2048k),但是如何告诉JVM在需要时动态分配它的堆栈呢?

如果我不能设置动态大小选项,那么设置一个大的Xss值(比如说20M)实际上会为JVM中的每个线程分配20MB内存吗?还是动态分配的内存会被限制在20MB?

共有2个答案

经景辉
2023-03-14

关于动态扩展,即使规范可能支持它,但实现可能不支持。

那么,如何告诉JVM在需要时动态分配其堆栈呢?

您将所有设置保留为默认设置,如果线程中的计算需要比允许的更大的堆栈,Java虚拟机会抛出StackOverflow Error。

这是使用-Xss显式增加对新线程的内存分配的提示。

这不会影响JVM堆。[请参阅-Xmx-Xms以设置堆大小]

我还必须说,每个线程20Mb似乎有点多。

这一切都取决于堆的大小和要支持的并发线程的数量。

何骞尧
2023-03-14

最大堆栈大小是分配给堆栈的虚拟地址空间量。内存仅根据需要提交给堆栈。

请注意,在32位系统上,虚拟地址空间是一种相对稀缺的资源。每个进程获得的内存少于(有时要少得多)4GB。考虑到这一点,20MB堆栈将线程数量限制在75到175之间。

 类似资料:
  • 扩展说明 将 Invoker 接口转换成业务接口。 扩展接口 org.apache.dubbo.rpc.ProxyFactory 扩展配置 <dubbo:protocol proxy="xxx" /> <!-- 缺省值配置,当<dubbo:protocol>没有配置proxy属性时,使用此配置 --> <dubbo:provider proxy="xxx" /> 已知扩展 org.apache.

  • 我来自C/C++背景,在这里一个进程内存分为: null 我想把我的注意力集中在这一点上,当我阅读JVM中的堆和堆栈时,我们是在谈论堆栈和堆的概念吗?并且整个JVM的实际内存驻留在堆上(这里指的是堆的C++概念)?

  • 8.1. 定义访问令牌类型 8.2. 定义新的端点参数 8.3. 定义新的授权许可类型 8.4. 定义新的授权端点响应类型 8.5. 定义其他错误代码

  • 通过使用绝对URI作为令牌端点的“grant_type”参数的值指定许可类型,并通过添加任何其他需要的参数,客户端使用扩展许可类型。 例如,采用[OAuth-SAML]定义的安全断言标记语言(SAML)2.0断言许可类型请求访问令牌,客户端可以使用TLS发起如下的HTTP请求(额外的换行仅用于显示目的): POST /token HTTP/1.1 Host: server.example.com

  • 问题内容: 我正在使用Django构建Web应用程序。我选择Django的原因是: 我想使用免费/开源工具。 我喜欢Python,并认为它是一种长期的语言,而对于Ruby,我不确定,PHP似乎是一个学习的巨大麻烦。 我正在为一个想法构建原型,并且对未来没有太多考虑。开发速度是主要因素,我已经了解Python。 我知道,将来选择迁移到Google App Engine会更容易。 我听说Django很

  • 我需要减少从Optaplanner获取结果的延迟。是否可以跨集群中的多个实例(和/或机器)运行作业?我似乎找不到实现这一目标的任何信息/尝试。