簡體   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