繁体   English   中英

-Xss JVM选项实际上做了什么

[英]What does -Xss JVM option actually do

从文档中,-Xss用于设置JVM的堆栈大小。 但我对此声明感到非常困惑。

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

  1. 所有线程可以用作堆栈的总内存? 例如,如果-Xss设置为256K,则所有线程将在此256K内存中创建自己的堆栈。

  2. 每个线程堆栈的大小。 例如,如果-Xss设置为256K,则每个线程将具有256K大的堆栈。 因此10个线程将共使用2560K。

非常感谢你。

编辑:

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

然后我有一个跟进问题:这些内存将分配在哪里?

我们可以使用-Xmx和-Xms指定保留的堆内存。 是否使用这些保留的内存分配堆栈? 或者直接从本机内存分配?

它是每个线程的堆栈大小, 在java命令中引用此页面

-Xss 尺寸

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

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

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

每个线程都有自己的堆栈。 大多数JVM使用本机线程,这些堆栈使用本机虚拟内存。 使用虚拟内存的优点只是触摸的页面变成了使用的内存。

这些内存将分配到哪里?

本机内存就像C程序中的线程堆栈一样。

我们可以使用-Xmx和-Xms指定保留的堆内存。 是否使用这些保留的内存分配堆栈?

堆栈不使用堆,所以不。

或者直接从本机内存分配?

是。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM