我們的Java開發人員有時會使用java -Xss 1M
確保我們提供了1 MB空間,每個堆棧這是特別的線程。現在,我經常會對JVM從堆或系統內存中借用1 MB的內容感到困惑,或者是否有任何Java爲線程分配的特定內存。你能幫我理解這一點嗎?JVM堆棧存儲器
同時,我們是否有一個視覺(插件)運行時工具,它顯示了在理解的方式堆和棧的內容是什麼?
在此先感謝。
我們的Java開發人員有時會使用java -Xss 1M
確保我們提供了1 MB空間,每個堆棧這是特別的線程。現在,我經常會對JVM從堆或系統內存中借用1 MB的內容感到困惑,或者是否有任何Java爲線程分配的特定內存。你能幫我理解這一點嗎?JVM堆棧存儲器
同時,我們是否有一個視覺(插件)運行時工具,它顯示了在理解的方式堆和棧的內容是什麼?
在此先感謝。
其中JVM借從1 MB從堆或系統存儲器?
JVM從操作系統「借用」堆棧內存,所以也許這就是你所說的「系統內存」。 JVM實際上向操作系統的虛擬內存系統發出請求,使用它作爲線程堆棧空間使用的內存塊。所有的JVM使用的內存(代碼,堆棧,堆等)都以相同的方式從操作系統請求。堆棧內存與由JVM本身管理的堆內存是分開的。
有關JVM的內存是如何劃分的,我想看看這個答案的詳細信息:How is the java memory pool divided?
同時,我們是否有一個視覺(插件)運行時工具,可以顯示內容堆和堆棧以可理解的方式?
如果您在談論堆內存的內容,那麼您應該查找關於內存分析器的信息。這是一個很好的question about that topic。這也是一個good tutorial on the subject。但是,我不確定這些工具會以「可理解的方式」向您顯示內存。它們用於定位內存泄漏或一般對象分配帶寬問題。
沒有工具顯示堆棧內存,因爲它是基於各個線程的調用堆棧分配的,並沒有以易於調查的方式組織。
最後,對於多少內存被使用的JVM,你可以use jconsole as well的各部分的概述。
你如何確定你需要每個線程正好1MB堆棧大小? – Holger