我知道如何使用-Xss設置Java線程的堆棧大小,並將其用於我們的產品。Xss爲1個線程設置線程堆棧大小,對於所有線程的堆棧大小有什麼限制
但是,當我們的應用程序中使用了很多線程,並設置了-Xss(我們將其設置爲512k)。我們將遇到錯誤報告,無法創建新的本地線程。 它應該與堆棧大小有關,因爲當我們設置-Xss256k時,錯誤消失了。
我的問題是針對1個線程,Xss設置堆棧大小,但對於所有線程堆棧大小如何?
整個Thread的堆棧內存大小是多少? 我沒有找到這樣的JVM設置,而我們現在似乎遇到了這樣的問題。
所有線程的堆棧大小都沒有Java設置。當本地平臺告訴您無法再創建更多線程時,您會看到它什麼時候用完。 – Kayaman
我建議你看看一種優化線程的方式來減少堆棧使用,如果這是你的限制。我假設你不能只添加更多的內存。 –
明白了,謝謝。所以它可能與創建線程時下劃線OS的能力有關。每個線程使用包括堆棧在內的資源,並且在某些情況下,不能創建更多線程。在我們的應用程序示例中,當堆棧大小爲512k並且創建100個線程無效時,堆棧大小爲256k的相同線程工作。我們正在編寫負載測試工具,並且每個線程的內容均由我們的用戶指定,因此無法優化線程。在這種情況下,似乎只有特殊的JVM實現和相關的操作系統限制。 –