2015-09-15 87 views
-1

對於熱點JVM,Xss選項是否設置初始堆棧大小,它始終固定在此大小?或者它是否設置最大堆棧大小,以便堆棧最初以較小的大小開始,然後可以增長到設置的最大大小?Hotspot JVM的「Xss」選項是否將固定的「初始堆棧大小」或堆棧可以增長到的「最大堆棧大小」設置爲?

這種行爲對於「堆大小」來說非常明顯,其中「Xms」設置了初始堆大小,「Xmx」設置了最大堆大小。但是「Xss」選項對我來說似乎並不清楚。

注:我通過了帖子Dynamically expandable JVM stack,但我無法從該帖子得到明確答案。

回答

0

-Xss設置初始線程堆棧大小(由OS特定算法調整)。

E.g.看看linux implementation,4130-4151行:

-Xss值被放在變量ThreadStackSize由發射器。消毒和四捨五入後,通過JavaThread::set_stack_size_at_create存儲,並在稍後創建新的Java線程時用於調整堆棧大小。

不知道Hotspot是否實現線程堆棧的動態擴展。

+0

感謝您的澄清。假設我的應用程序有10個線程,其中9個需要128k,其中一個需要1024k。理想情況下,2176k(128k * 9 + 1024k)的堆棧內存將足以滿足此應用程序的需求。當線程啓動時,將Xss設置爲1024k是否預留了10 MB(1024k * 10)的初始和固定堆棧內存,而實際上2176k已足夠?因此,額外的8064k內存會浪費掉,因爲同樣的內存可能已經被用於其他目的,比如堆? –

+0

@SanjayBhat是的,這似乎是悲傷的後果 – wero