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

-Xss JVM选项实际上做什么

谢弘阔
2023-03-14

从文档中可以看出,-Xss用于设置JVM的堆栈大小。但我对这一说法感到非常困惑。

在Java中,每个线程都有自己的堆栈。-Xss指定的数字是否:

>

线程的每个堆栈的大小。e、 如果将-Xss设置为256K,则每个线程将有一个256K大的堆栈。因此,10个线程将总共使用2560K。

非常感谢你。

编辑:

谢谢你的回答。看起来像是上面的(2)senario-Xss指定特定线程的最大堆栈大小。

然后我有一个后续问题:这些内存将分配到哪里?

我们可以使用-Xmx和-Xms指定保留堆内存。堆栈将使用这些保留内存进行分配吗?还是直接从本机内存分配?

共有2个答案

羊舌庆
2023-03-14

每个线程都有自己的堆栈。大多数JVM使用本机线程,这些堆栈使用本机虚拟内存。使用虚拟内存的优点是,只需将触摸到的页面转换为使用的内存。

这些内存将在哪里分配?

C程序中类似本机内存的线程堆栈。

我们可以使用-Xmx和-Xms指定保留堆内存。堆栈将使用这些保留内存进行分配吗?

堆栈不使用堆,所以,不。

还是直接从本机内存分配?

孟品
2023-03-14

这是每个线程的堆栈大小,引用java命令中的这一页:

-Xsssize

设置线程堆栈大小(以字节为单位)。。。

这是你问题的第二部分。然而,我认为总结所有线程堆栈大小通常并不准确。根据JVM实现,实际的总堆栈大小可能不是2560K。请注意JVM规范中的这句话:

该规范允许Java虚拟机堆栈具有固定大小或根据计算需要动态扩展和收缩。如果Java虚拟机堆栈的大小固定,则可以在创建每个Java虚拟机堆栈时独立选择其大小。

 类似资料:
  • 我只是第一次涉足iOS开发,我必须做的第一件事就是实现一个自定义容器视图控制器——让我们称之为SideBarViewController——它交换了几种可能的视图控制器中的哪一种它显示的子视图控制器,几乎与标准的Tab Bar Controller一模一样。(它几乎是一个标签栏控制器,但有一个可隐藏的侧菜单,而不是标签栏。) 根据Apple文档中的说明,每当我向容器中添加子ViewControll

  • 问题内容: 我是Docker的新手。我在docker run命令中找不到对此选项的任何清晰描述,对此有些困惑。 我们可以使用它来访问在docker容器上运行的应用程序而无需指定端口吗?例如,如果我使用docker run命令中的选项运行通过端口8080中的docker映像部署的webapp ,我知道我将必须在Docker容器ip / theWebAppName的8080端口上访问它。但是我真的无法

  • 问题内容: 什么是真正做? 它的定义是 刷新实体时,此字段中保存的所有实体也会刷新 但这实际上意味着什么?有人可以给我一个简单的例子吗? 问题答案: 单独的CascadeType描述可能会有些混乱,但是有一种简单的方法可以从一般情况中找出来。 对于任何值,这意味着如果使用接口在实例上调用了操作,并且该实例具有对其他实体实例的引用,并且已经定义了关联,则该操作也将应用于该关联实体。 因此定义为: 从

  • 我正试图把我的头缠在Apache Mesos上,需要澄清几个项目。 我对Mesos的理解是,它是一个安装在集群中的每个物理/VM服务器(“节点”)上的可执行文件,然后提供一个Java API(不知何故),将每个单独的节点视为计算资源(CPU/RAM/等)的集体池。因此,对于使用Java API编码的程序,他们只看到一组资源,而不必担心如何/在哪里部署代码。 因此,首先,我在这里的理解可能是根本错误

  • 我在看一个典型的for循环: 我对int I=1后的分号很满意:它是一个声明新变量的语句。如果i也是一个语句,为什么后面没有分号? 另一个例子。我打开Jshell并放置以下内容: 换句话说,命令可以工作,与是否有分号无关。我希望没有它就无法工作。 最后一个示例(改编自关于

  • 我已经回答了一个关于Python中的绝对导入的问题,我认为通过阅读Python2.5更改日志和附带的PEP我理解了这个问题。但是,在安装Python2.5并尝试创建一个从__future__import absolute_import中正确使用